【发布时间】:2022-12-25 11:21:11
【问题描述】:
我想正确配置项目的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 的步骤相同。
现在我想使用 VSCode Cmake 工具执行这个build task。我发现我只需要制作一个 vscode_build_cmake/.vscode/settings.json 文件,我可以在其中指向 CMakeLists.txt 文件的目录。我现在正在与
{
"cmake.configureOnOpen": false,
"cmake.sourceDirectory": "${workspaceFolder}/task/add"
}
我只需按ctrl+shift+p,然后在命令框中输入run build task,然后按Enter。那个为我完成了工作,我可以在 task/add 目录中看到 build, bin, lib 目录。
但是我现在面临的问题是,如果我需要构建 print 子项目,我必须手动编辑 settings.json 文件,如下所示
{
"cmake.configureOnOpen": false,
"cmake.sourceDirectory": "${workspaceFolder}/task/print"
}
之后,我必须 delete cache and reconfigure 和 build task 现在只为 print 项目执行构建任务。这对我来说非常乏味。
我的愿望是知道
- 有什么方法可以指出
cmake.sourceDirectory中add和print的CMakeLists.txt文件吗?哪个可以告诉我我想执行哪个构建任务?例如:
{
"cmake.configureOnOpen": false,
"cmake.sourceDirectory": ["${workspaceFolder}/task/add",
"${workspaceFolder}/task/print"]
}
要么 ,
- 有什么方法可以执行两个子项目的构建任务。(这个是可选的。前一个对我的情况很重要)。
我正在使用 CMake 工具 v1.13.4。
【问题讨论】:
-
如果任务是主项目,它应该有一个顶级 CMakeLists,每个子项目都有 add_subdirectory。 AFAIK CMake 工具无法处理同一 VSCode 实例中的多个顶级 CMakeList。
-
@SpacePotatoes
task是所有独立子项目所在的目录(我也称为项目)。使用目前的结构,无法将顶级 CMakeList 放在那里。
标签: c++ linux visual-studio-code cmake