当前位置: 首页 > news >正文

ROS 2机器人开发--CMakeLists.txt 文件详解

很多小白宝宝不懂CMakeLists.txt 究竟是干什么的,本文对CMakeLists.txt 文件进行详解

    CMakeLists.txt 是 CMake 的核心文件,用户通过这个文件告诉 CMake 如何构建项目。这个文件通常包括设置项目名称、版本号、语言标准、编译器选项、查找依赖包、添加可执行文件或库、链接依赖库、安装路径等。

        每一行代码的解释如下:

 版本要求:

cmake_minimum_required(VERSION 3.5)

这行代码设置了 CMake 的最低版本要求。CMake 是一个跨平台的构建工具,不同的版本可能有不同的功能。这行代码确保用户使用的 CMake 版本不低于 3.5,以保证项目能够正确构建。

 项目名称:

project(demo_cpp_pkg)

这行代码定义了项目的名称。项目的名称在构建过程中会用到,例如生成的库或可执行文件的名称通常会包含项目名称。

指定标准:

if(NOT CMAKE_C_STANDARD)set(CMAKE_C_STANDARD 99)
endif()if(NOT CMAKE_CXX_STANDARD)set(CMAKE_CXX_STANDARD 14)
endif()

这行代码设置了默认的 C 和 C++ 标准。如果没有明确指定标准,CMake 会使用 C99 作为默认的 C 标准,C++14 作为默认的 C++ 标准。

 编译选项:

if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")add_compile_options(-Wall -Wextra -Wpedantic)
endif()

这行代码为特定的编译器(如 GNU C++ 和 Clang)添加编译选项。-Wall-Wextra 会启用更多的编译警告,-Wpedantic 会启用严格的 ISO C++ 标准检查。

 查找依赖包:

find_package(ament_cmake REQUIRED)
find_package(rclcpp REQUIRED)
find_package(std_msgs REQUIRED)

这行代码查找项目所需的依赖包。find_package 是 CMake 的一个命令,用于查找和加载外部库或包。REQUIRED 表示如果没有找到这些包,CMake 将报错。

添加可执行文件:

add_executable(talker src/talker.cpp)

 这行代码添加一个可执行文件,talker 是可执行文件的名称,src/talker.cpp 是源文件的路径。

添加依赖:

ament_target_dependencies(talker rclcpp std_msgs)

这行代码将可执行文件 talker 链接到依赖库 rclcppstd_msgs

 下载位置:

install(TARGETStalkerDESTINATION lib/${PROJECT_NAME}
)

这行代码指定了可执行文件的安装路径。lib/${PROJECT_NAME} 是典型的 ROS 2 安装路径。

http://www.lryc.cn/news/544745.html

相关文章:

  • kan与小波,和不知所云的画图
  • 使用DeepSeek实现自动化编程:类的自动生成
  • 算法题:快速排序
  • Python的那些事第三十六篇:基于 Vega 和 Vega-Lite 的数据可视化解决方案,Altair 声明式可视化库
  • aws(学习笔记第三十课) 练习使用transit gateway
  • Phpstudy中的MySQL无法正常启动或启动后自动暂停,以及sqlilab环境搭建出现的问题解决方法
  • 【Android】安卓付款密码输入框、支付密码输入框
  • Python异常处理:从入门到精通的实用指南
  • 【AVL树】—— 我与C++的不解之缘(二十三)
  • 用大白话解释日志处理Log4j 是什么 有什么用 怎么用
  • 无人机遥控器的亮度 和 两个工作频率
  • 【Linux】命令行参数 | 环境变量(四)
  • 算法002——复写零
  • 例子 DQN + CartPole: 深入思考一下,强化学习确实是一场智能冒险之旅!
  • java 实现xxl-job定时任务自动注册到调度中心
  • esp32串口通信
  • 蓝桥杯备赛-前缀和-可获得的最小取值
  • UniApp 中封装 HTTP 请求与 Token 管理(附Demo)
  • 边缘计算+多模态感知:户外监控核心技术解析与工程部署实践!户外摄像头监控哪种好?户外摄像头监控十大品牌!格行视精灵VS海康威视VS大华横评!
  • Spring项目-抽奖系统(实操项目)(ONE)
  • STM32-智能小车项目
  • Python:字符串常见操作
  • Redis 哈希(Hash)
  • Windows对比MacOS
  • react 路由跳转的几种方式
  • 2.你有什么绝活儿?—Java能做什么?
  • 2025年2月文章一览
  • C++ | 面向对象 | 类
  • leetcode:2164. 对奇偶下标分别排序(python3解法)
  • Visionpro cogToolBlockEditV2.Refresh()