CMakeLists详解
介绍:CMakeLists.txt定义了如何构建项目,包括哪些源文件需要编译,依赖关系如何处理,如何生成可执行文件和库,以及如何安装和测试生成的目标。
文章约定:
- 环境:
ROS1
- 基于
catkin
构建工具 - 遵循:Catkin CMakeLists.txt - ROS
- 如有错误,请包容,以及麻烦在评论区勘误
- 书山有路勤为径,学海无涯苦作舟
1. CMakeLists.txt框架
官方示例:
Required CMake Version (cmake_minimum_required) |
CMakelists.txt框架:
- cmake版本:
cmake_minimum_required()
- 包名称:
project()
- 指定依赖项:
find_package()
- 启用对python模块的支持:
catkin_python_setup()
- 消息/服务/动作通讯生成器:
add_message_files()
,add_service_files()
,add_action_files()
- 调用 消息/服务/动作通讯:
generate_messages()
- 定义和导出包的属性和信息:
catkin_package()
- 要构建的库/可执行文件:
add_library()
,add_executable()
,target_link_libraries()
- 构建测试:
catkin_add_gtest()
- 安装规则:
install()
2. 详解
2.1 cmake版本
使用:
cmake_minimum_required(VERSION 2.8.3) |
catkin至少需要
2.8.3
或更高版本。
2.2 包名称
使用:
project(robot) |
在定义包名后,可用在文件中任意位置使用 ``${PROJECT_NAME
}
替代包名。
2.3 find_package()
本宏主要用于指定包构建时需要的依赖项,至少包含:
find_package(catkin REQUIRED) |
REQUIRED
:如果查找不到该包或组件信息,报错并停止。
添加其它依赖项:例如添加 nodelete
包
find_package(nodelete REQUIRED) |
当存在很多时,这显然不太方便:
find_package(catkin REQUIRED COMPONENTS nodelet) |
说明:
COMPONENTS
:指定你要查找的特定子模块或组件
此文章版权归lancit所有,如有转载,请注明来自原作者。