如何配置VSCode CMake Tools管理多子项目CMakeLists.txt
解决VSCode CMake Tools多子项目构建配置问题
问题1:能否在cmake.sourceDirectory中指定多个路径并选择构建任务?
不行,cmake.sourceDirectory仅支持单个字符串路径,无法设置数组。但有更便捷的替代方案:
方案一:利用工作区多文件夹切换
- 通过
文件 > 将文件夹添加到工作区...,分别把task/add和task/print加入VSCode工作区 - 打开命令面板(
Ctrl+Shift+P),执行CMake: Select a Kit为每个子项目配置工具链 - 切换到对应子项目的文件夹时,CMake Tools会自动识别该目录下的
CMakeLists.txt,直接执行CMake: Build即可构建当前子项目
方案二:配置多工作区文件
在项目根目录vscode_build_cmake下创建.code-workspace文件,内容如下:
{ "folders": [ { "path": "task/add" }, { "path": "task/print" } ], "settings": { "cmake.configureOnOpen": false } }
打开该工作区文件后,点击左侧资源管理器的子项目文件夹,CMake Tools会自动切换到对应源目录,无需手动修改settings.json。
问题2:如何同时构建两个子项目?
有两种实现方式:
方式一:自定义Shell构建任务
在.vscode/tasks.json中添加批量构建任务:
{ "version": "2.0.0", "tasks": [ { "label": "Build All Subprojects", "type": "shell", "command": "cd ${workspaceFolder}/task/add && mkdir -p build && cd build && cmake .. && make && cd ../../print && mkdir -p build && cd build && cmake .. && make", "group": { "kind": "build", "isDefault": false }, "problemMatcher": [] } ] }
执行Ctrl+Shift+B即可选择该任务,一次性构建两个子项目。
方式二:添加顶层CMakeLists.txt
在task目录下创建顶层CMakeLists.txt:
cmake_minimum_required(VERSION 3.10) project(AllSubprojects) add_subdirectory(add) add_subdirectory(print)
然后修改settings.json:
{ "cmake.configureOnOpen": false, "cmake.sourceDirectory": "${workspaceFolder}/task" }
执行CMake: Build时会同时构建两个子项目,产物将保留在各自的build目录中(需确保子项目的CMake配置已指定正确输出路径)。
内容的提问来源于stack exchange,提问作者karim
相关产品推荐
相关产品推荐

