首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >配置vscode以包含多个子项目的CMakeLists.txt文件。

配置vscode以包含多个子项目的CMakeLists.txt文件。
EN

Stack Overflow用户
提问于 2022-09-12 17:26:47
回答 1查看 210关注 0票数 1

我想正确地配置项目的settings.json文件使用多个子项目的CMakeLists.txt文件。

下面给出我的方法

该项目的结构如下。

代码语言:javascript
运行
复制
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

在这里,addprint是主项目task的完全孤立的子项目.每个子项目都有自己的构建配方,并将其写入自己的CMakeLists.txt文件中。构建子项目的通常步骤是:

代码语言:javascript
运行
复制
cd task/add
mkdir build
cd build
cmake .. && make

同样的步骤也适用于task/print

现在,我想使用build task Cmake工具来执行这个VSCode。我发现我只需要创建一个vscode_build_cmake/.vscode/settings.json文件,在这里我可以指向CMakeLists.txt文件的目录。我现在在工作

代码语言:javascript
运行
复制
{
    "cmake.configureOnOpen": false,
    "cmake.sourceDirectory": "${workspaceFolder}/task/add"
}

我只需按ctrl+shift+p并在命令框run build task中写入,然后按Enter。这个可以帮我完成工作,我可以看到build, bin, lib目录中的task/add目录。

但我现在面临的问题是,如果我需要构建print子项目,我必须手动编辑settings.json文件,如下所示

代码语言:javascript
运行
复制
{
    "cmake.configureOnOpen": false,
    "cmake.sourceDirectory": "${workspaceFolder}/task/print"
}

之后,我必须使用delete cache and reconfigurebuild task,它们现在只为print项目执行构建任务。这个对我来说很乏味。

我的愿望是知道

  • 有没有办法指出CMakeLists.txt文件的addprintcmake.sourceDirectory?哪一个能告诉我我想执行哪一个构建任务?例:
代码语言:javascript
运行
复制
{
    "cmake.configureOnOpen": false,
    "cmake.sourceDirectory": ["${workspaceFolder}/task/add",
                              "${workspaceFolder}/task/print"]
}

或者,

  • 是否有任何方法来执行两个子项目的构建任务。(这个是可选的。前一个对我的案子很重要)。
EN

回答 1

Stack Overflow用户

发布于 2022-09-13 06:12:47

如果您打算不使用tasks/CMakeLists.txt (add_subdirectoryadd/print/ ),那么可以考虑使用VS代码的多根工作区特性,vscode-cmake-tools扩展支持这种特性。

如果您有理由不使用/不喜欢多根工作区方法,则可以显示您对vscode-cmake-tools问题#1374 (“支持多个CMakeLists.txt而不需要多根工作区”)和建议的解决办法的支持。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73693054

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档