首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使colcon与多个预置并行的基于普通预设的CMake项目一起工作?

如何使colcon与多个预置并行的基于普通预设的CMake项目一起工作?
EN

Stack Overflow用户
提问于 2022-06-23 09:56:07
回答 1查看 180关注 0票数 0

序曲

我有一个预置普通的CMake项目,这样我就可以用cmake --preset $PRESET && cmake --build --preset $PRESET && ctest --preset $PRESET构建和测试它。请注意,它与代码的CMake工具扩展很好地交互,无论是用于构建、测试、调试和智能感知。

由于我希望并行处理多个预设,所以我将CMakePresets.jsonbinaryDir属性设置为${sourceDir}/build/${presetName}/

问题

我还想用CMake构建这个普通的科隆项目。但是,colcon build --cmake-args "--preset $PRESET"不能工作,因为它产生了

代码语言:javascript
复制
WARNING:colcon.colcon_cmake.task.cmake.build:Could not build CMake package 'root_project_name' because the CMake cache has no 'CMAKE_PROJECT_NAME' variable

root_project_name是顶部CMakeLists.txt中CMake的project()命令的参数。

如何解决此警告和随后的构建失败?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-23 09:56:07

直白解

不设置CMakePresets.jsonbinaryDir属性对colcon很好,但不允许多个预置生成并行。

多个预设并行构建的解决方案

造成这种行为的原因是colcon核build谓词将构建基目录(默认:build)以找到的包的名称(此处:root_project_name)后缀到科康-扩展这里

解决方案是将正确的构建基传递给colcon (即colcon build --build-base ./build/$PRESET/ --cmake-args "--preset $PRESET"),并将CMakePresets.jsonbinaryDir属性调整为${sourceDir}/build/${presetName}/root_project_name/

注意,这也适用于colcon test,即colcon test --build-base ./build/$PRESET/ --ctest-args "--preset $PRESET"

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

https://stackoverflow.com/questions/72728214

复制
相关文章

相似问题

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