microsoft / vscode-cmake-tools

CMake integration in Visual Studio Code
https://marketplace.visualstudio.com/items?itemName=vector-of-bool.cmake-tools
MIT License
1.46k stars 449 forks source link

Source and build directories should be configurable per kit #3827

Open cjdb opened 3 months ago

cjdb commented 3 months ago

Brief Issue Summary

I work on LLVM, which is a federation of CMake projects. For example, cmake -S /path/to/llvm-project/llvm configures a build directory for building all of LLVM, while cmake -S /path/to/llvm-project/runtimes will only configure a directory for building the runtimes subproject (similarly for cmake -S /path/to/llvm-project/clang, cmake -S /path/to/llvm-project/lldb, etc.). It would be nice to specify the source directory per kit, so that I don't risk forgetting to change it when swapping from subproject to subproject.

Similarly, it would be good for each kit to specify its own build directory. This will make A/B tests and profile-guided optimisation builds less painful.

CMake Tools Diagnostics

No response

Debug Log

No response

Additional Information

Here's what I'd like to see:

[
  {
    "name": "Build LLVM (stage 1)",
    "sourceDirectory": "${workspaceFolder}/llvm",
    "buildDirectory": "${workspaceFolder}/build/llvm-stage-1",
    "cmakeSettings": {
        // ...
    }
  },
  {
    "name": "Build LLVM (stage 2)",
    "sourceDirectory": "${workspaceFolder}/llvm",
    "buildDirectory": "${workspaceFolder}/build/llvm-stage-2",
    "cmakeSettings": {
        // ...
    }
  },
  {
    "name": "Build LLVM (stage 3)",
    "sourceDirectory": "${workspaceFolder}/llvm",
    "buildDirectory": "${workspaceFolder}/build/llvm-stage-3",
    "cmakeSettings": {
        // ...
    }
  },
  {
    "name": "Build Clang",
    "sourceDirectory": "${workspaceFolder}/clang",
    "buildDirectory": "${workspaceFolder}/build/clang",
    "cmakeSettings": {
        // ...
    }
  },
  {
    "name": "Build runtimes",
    "sourceDirectory": "${workspaceFolder}/runtimes",
    "buildDirectory": "${workspaceFolder}/build/runtimes",
    "cmakeSettings": {
        // ...
    }
  },
]