ROS 顶层 CMakelists.txt 未使用,如何为所有子项目提供 cmake 默认值?
ROS top level CMakelists.txt is not used, how to give cmake defaults for all sub projects?
我有一个工作区,如 ROS REP 128 又名:
catkin_ws
src
CMakeLists.txt // < 1.
project_1
CMakeLists.txt
project_2
CMakeLists.txt
...
事实上,您可以使用 catkin 教程重现此内容 here。顶级 CMakeLists.txt
(上例中的 1.
)似乎没有来源。我可以说出这一点,因为我添加了行,weifnbwefn
到它的末尾,期望出现 cmake 错误(在干净的构建中)但是得到了 none.
要重现此内容:
- 克隆上面的 repo。
- 导航至
catkin_tutorials/create_package_pubsub/catkin_ws
- 用无法构建的内容修改
src/CMakeLists.txt
。
- 使用
catkin build
构建
所以这导致了 2 个问题:
- 为什么这个文件没有被使用?
- 如何为我的所有子项目添加默认的 cmake 项目?例如。如果我想为每个子项目添加
set(CMAKE_CXX_STANDARD 17)
?
对于 2. ,我知道我可以在 .catkin_tools
中向我的构建配置文件添加额外的 cmake args,但是对于比几个参数更复杂的任何东西,这将无法扩展。
My understanding from the docs 是 src/CMakeLists.txt
旨在作为 ROS 安装中 catkin/cmake/toplevel.cmake
的符号链接,而不是被编辑。它仅在 CMake 驱动遗留构建工作流程时使用。
catkin build
实施的新工作流程忽略此文件,专门用于隔离构建并防止一个包设置 CMake 缓存变量的串扰另一个读取。
这就是第 (1) 部分的答案,但遗憾的是,我对 catkin 的经验不足,不知道存储通用配置的最佳做法是什么。我知道 catkin build
有一个 --cmake-args
标志,您可以将其与 CMAKE_PROJECT_INCLUDE
变量一起使用以注入包含您的设置的 CMake 文件。
具体对于 C++17,这看起来像:
$ catkin build --cmake-args -DCMAKE_CXX_STANDARD=17
我有一个工作区,如 ROS REP 128 又名:
catkin_ws
src
CMakeLists.txt // < 1.
project_1
CMakeLists.txt
project_2
CMakeLists.txt
...
事实上,您可以使用 catkin 教程重现此内容 here。顶级 CMakeLists.txt
(上例中的 1.
)似乎没有来源。我可以说出这一点,因为我添加了行,weifnbwefn
到它的末尾,期望出现 cmake 错误(在干净的构建中)但是得到了 none.
要重现此内容:
- 克隆上面的 repo。
- 导航至
catkin_tutorials/create_package_pubsub/catkin_ws
- 用无法构建的内容修改
src/CMakeLists.txt
。 - 使用
catkin build
构建
所以这导致了 2 个问题:
- 为什么这个文件没有被使用?
- 如何为我的所有子项目添加默认的 cmake 项目?例如。如果我想为每个子项目添加
set(CMAKE_CXX_STANDARD 17)
?
对于 2. ,我知道我可以在 .catkin_tools
中向我的构建配置文件添加额外的 cmake args,但是对于比几个参数更复杂的任何东西,这将无法扩展。
My understanding from the docs 是 src/CMakeLists.txt
旨在作为 ROS 安装中 catkin/cmake/toplevel.cmake
的符号链接,而不是被编辑。它仅在 CMake 驱动遗留构建工作流程时使用。
catkin build
实施的新工作流程忽略此文件,专门用于隔离构建并防止一个包设置 CMake 缓存变量的串扰另一个读取。
这就是第 (1) 部分的答案,但遗憾的是,我对 catkin 的经验不足,不知道存储通用配置的最佳做法是什么。我知道 catkin build
有一个 --cmake-args
标志,您可以将其与 CMAKE_PROJECT_INCLUDE
变量一起使用以注入包含您的设置的 CMake 文件。
具体对于 C++17,这看起来像:
$ catkin build --cmake-args -DCMAKE_CXX_STANDARD=17