我想正确地配置项目的settings.json
文件使用多个子项目的CMakeLists.txt
文件。
下面给出我的方法
该项目的结构如下。
vscode_build_cmake/
`-- task
|-- add
| |-- CMakeLists.txt
| |-- include
| | `-- foo.h
| `-- src
| |-- foo.cpp
| `-- main.cpp
`-- print
|-- CMakeLists.txt
|-- include
| `-- foo.h
`-- src
|-- foo.cpp
`-- main.cpp
在这里,add
和print
是主项目task
的完全孤立的子项目.每个子项目都有自己的构建配方,并将其写入自己的CMakeLists.txt
文件中。构建子项目的通常步骤是:
cd task/add
mkdir build
cd build
cmake .. && make
同样的步骤也适用于task/print
。
现在,我想使用build task
Cmake工具来执行这个VSCode。我发现我只需要创建一个vscode_build_cmake/.vscode/settings.json
文件,在这里我可以指向CMakeLists.txt
文件的目录。我现在在工作
{
"cmake.configureOnOpen": false,
"cmake.sourceDirectory": "${workspaceFolder}/task/add"
}
我只需按ctrl+shift+p
并在命令框run build task
中写入,然后按Enter
。这个可以帮我完成工作,我可以看到build, bin, lib
目录中的task/add
目录。
但我现在面临的问题是,如果我需要构建print
子项目,我必须手动编辑settings.json
文件,如下所示
{
"cmake.configureOnOpen": false,
"cmake.sourceDirectory": "${workspaceFolder}/task/print"
}
之后,我必须使用delete cache and reconfigure
和build task
,它们现在只为print
项目执行构建任务。这个对我来说很乏味。
我的愿望是知道
CMakeLists.txt
文件的add
和print
的cmake.sourceDirectory
?哪一个能告诉我我想执行哪一个构建任务?例:{
"cmake.configureOnOpen": false,
"cmake.sourceDirectory": ["${workspaceFolder}/task/add",
"${workspaceFolder}/task/print"]
}
或者,
发布于 2022-09-13 06:12:47
如果您打算不使用tasks/CMakeLists.txt
(add_subdirectory
的add/
和print/
),那么可以考虑使用VS代码的多根工作区特性,vscode-cmake-tools
扩展支持这种特性。
如果您有理由不使用/不喜欢多根工作区方法,则可以显示您对vscode-cmake-tools问题#1374 (“支持多个CMakeLists.txt而不需要多根工作区”)和建议的解决办法的支持。
https://stackoverflow.com/questions/73693054
复制相似问题