run-cmake 项目最佳实践教程

run-cmake 项目最佳实践教程

run-cmake GitHub Action to build C++ applications with CMake (CMakePresets.json), Ninja and vcpkg on GitHub. run-cmake 项目地址: https://gitcode.com/gh_mirrors/ru/run-cmake

1. 项目介绍

run-cmake 是一个开源项目,旨在简化 CMake 的运行和测试过程。CMake 是一个跨平台的安装(编译)工具,能够使用简单的声明性语句描述所有平台的安装(编译过程)。run-cmake 提供了一个方便的方式来运行 CMake 的测试案例,帮助开发者确保其 CMakeLists.txt 文件的正确性和兼容性。

2. 项目快速启动

要快速启动 run-cmake,请按照以下步骤操作:

首先,克隆项目到本地目录:

git clone https://github.com/lukka/run-cmake.git
cd run-cmake

然后,安装项目依赖:

pip install -r requirements.txt

最后,运行测试案例:

python run.py

这将执行 run-cmake 的测试套件,显示结果,并帮助你验证 CMake 配置。

3. 应用案例和最佳实践

以下是使用 run-cmake 的一些应用案例和最佳实践:

  • 测试 CMakeLists.txt:在修改 CMakeLists.txt 文件后,使用 run-cmake 来测试新的配置是否能够正确执行。
  • 持续集成:将 run-cmake 集成到持续集成流程中,以确保每次代码提交都不会破坏构建过程。
  • 跨平台测试:利用 run-cmake 在不同平台上的测试能力,确保你的 CMake 配置在所有目标平台上都能正常工作。

4. 典型生态项目

在 CMake 生态系统中,以下是一些典型的项目,它们可以与 run-cmake 结合使用来提高开发效率:

  • CMake itself:CMake 项目本身可以使用 run-cmake 进行测试,以确保其核心功能的正确性。
  • CTemplate:一个基于 CMake 的模板生成器,可以用 run-cmake 来验证生成的模板是否正确。
  • CTest:CMake 的测试驱动工具,可以与 run-cmake 结合使用,以自动化测试过程。

通过遵循上述最佳实践,开发者可以更有效地利用 run-cmake 来优化其 CMake 项目开发流程。

run-cmake GitHub Action to build C++ applications with CMake (CMakePresets.json), Ninja and vcpkg on GitHub. run-cmake 项目地址: https://gitcode.com/gh_mirrors/ru/run-cmake

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

ubt@ubt:~/catkin_ws$ catkin build -------------------------------------------------------- Profile: default Extending: [cached] /opt/ros/noetic Workspace: /home/ubt/catkin_ws -------------------------------------------------------- Build Space: [exists] /home/ubt/catkin_ws/build Devel Space: [exists] /home/ubt/catkin_ws/devel Install Space: [unused] /home/ubt/catkin_ws/install Log Space: [exists] /home/ubt/catkin_ws/logs Source Space: [exists] /home/ubt/catkin_ws/src DESTDIR: [unused] None -------------------------------------------------------- Devel Space Layout: linked Install Space Layout: None -------------------------------------------------------- Additional CMake Args: None Additional Make Args: None Additional catkin Make Args: None Internal Make Job Server: True Cache Job Environments: False -------------------------------------------------------- Buildlisted Packages: None Skiplisted Packages: None -------------------------------------------------------- Workspace configuration appears valid. -------------------------------------------------------- [build] Found 6 packages in 0.0 seconds. [build] Package table is up to date. Starting >>> gazebo_dev Starting >>> gazebo_msgs _______________________________________________________________________________ Warnings << gazebo_dev:check /home/ubt/catkin_ws/logs/gazebo_dev/build.check.002.log CMake Warning (dev) at CMakeLists.txt:2 (project): Policy CMP0048 is not set: project() command manages VERSION variables. Run "cmake --help-policy CMP0048" for policy details. Use the cmake_policy command to set the policy and suppress this warning. The following variable(s) would
03-22
<think>好的,我现在需要解决用户在使用Catkin构建ROS Noetic工作空间时遇到的CMP0048 CMake警告问题。首先,我得回忆一下CMake的策略管理机制。CMake的策略(Policies)是用来管理不同版本间行为变化的,当项目使用的CMake版本与策略设置不兼容时就会产生警告。CMP0048这个策略具体是关于什么的呢? 查阅资料后,我了解到CMP0048是在CMake 3.0引入的,主要涉及项目版本变量的管理。旧版本的CMake允许在`project()`命令之后修改`PROJECT_VERSION`等变量,而CMP0048要求必须在`project()`调用时直接指定版本号,否则会发出警告。用户的问题可能是在他们的CMakeLists.txt中没有正确设置项目版本,或者在多个地方修改了版本变量,导致CMake发出警告。 接下来,我需要考虑如何解决这个问题。根据CMake的文档,可以通过设置策略的版本来控制行为。用户可能需要在CMakeLists.txt的开头添加`cmake_policy(SET CMP0048 NEW)`来显式启用新策略,或者降低策略版本。但推荐的做法是更新项目代码以符合新策略的要求,即在`project()`命令中直接指定版本号,比如`project(my_project VERSION 1.0.0)`。这样不仅消除了警告,也符合最佳实践。 此外,用户可能使用的是较旧的项目模板或第三方包,这些地方的CMakeLists.txt可能没有更新。这时候,如果无法直接修改这些文件,可以在调用catkin build时通过传递CMake参数来设置策略,比如添加`--cmake-args -DCMAKE_POLICY_DEFAULT_CMP0048=NEW`。不过这种方法可能影响其他部分,需要谨慎使用。 还需要检查用户的CMake版本是否与ROS Noetic兼容。ROS Noetic默认使用CMake 3.16以上版本,而CMP0048在3.0就已经引入,所以版本兼容性可能不是问题。但用户如果自行安装了其他版本的CMake,可能需要调整环境变量或配置。 最后,应该提醒用户确保所有依赖包也遵循正确的策略设置,避免其他包引发同样的警告。如果问题依然存在,可能需要逐一排查工作空间中的各个包,找出未正确设置版本的CMakeLists.txt文件并进行修改。</think>### 解决Catkin构建中的CMP0048警告 在ROS Noetic中使用`catkin build`构建工作空间时,若出现`CMP0048`警告,通常是由于CMake策略(Policy)版本与项目配置不兼容导致。以下是逐步解决方案: --- #### 1. **理解CMP0048警告的原因** - **CMP0048策略**:该策略要求CMake在`project()`命令中显式声明项目版本,而非后续通过变量修改。旧版本的CMake允许在`project()`后设置`PROJECT_VERSION`等变量,但新版本(如ROS Noetic默认的CMake 3.16+)会触发警告[^1]。 - **典型警告信息**: ``` CMake Warning (dev): Policy CMP0048 is not set: project() command manages VERSION variables... ``` --- #### 2. **直接修改CMakeLists.txt** 在项目的`CMakeLists.txt`文件中,确保通过`project()`命令直接声明版本: ```cmake cmake_minimum_required(VERSION 3.0.2) project(your_project_name VERSION 1.0.0) # 显式指定版本 ``` - **作用**:避免后续手动设置`PROJECT_VERSION`,从而消除警告。 --- #### 3. **强制设置CMake策略** 若无法修改项目代码(如第三方包),可在`CMakeLists.txt`开头强制启用新策略: ```cmake cmake_policy(SET CMP0048 NEW) ``` --- #### 4. **通过catkin build传递参数** 在构建命令中直接覆盖策略设置: ```bash catkin build --cmake-args -DCMAKE_POLICY_DEFAULT_CMP0048=NEW ``` - **注意**:此方法可能影响其他策略,建议优先修改`CMakeLists.txt`[^2]。 --- #### 5. **更新ROS和CMake版本** 确保ROS Noetic和CMake版本兼容: ```bash sudo apt update && sudo apt upgrade ros-noetic-* ``` --- #### 6. **验证修改** 重新构建工作空间,检查警告是否消失: ```bash catkin clean && catkin build ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

巫崧坤

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值