目录
1 概述
CMakeLists.txt文件是CMake编译系统的输入,描述如何编译代码和安装。用于catkin项目的CMakeLists.txt在原始的CMakeLists.txt基础上添加了一点额外约束。
2 整体结构和顺序
CMakeLists.txt文件的格式和顺序十分重要,包括如下:
- CMake版本 (cmake_minimum_required())
- 功能包名称 (project())
- 发现编译需要的CMake/Catkin包 (find_package())
- Python模块支持 (catkin_python_setup())
- 添加Message/Service/Action (add_message_files(), add_service_files(), add_action_files())
- 生成Message/Service/Action (generate_messages())
- 功能包编译信息导出 (catkin_package())
- 库/可执行文件 (add_library() / add_executable() / target_link_libraries())
- 测试 (catkin_add_gtest())
- 安装 (install())
3 CMake版本
catkin需要2.8.3+
cmake_minimum_required(VERSION 2.8.3)
4 功能包名称(package name)
通过CMake project
指定,
project(robot_brain)
在CMake中,可以通过${PROJECT_NAME}
引用这个package name。
5 发现CMake Packages
使用find_package
函数,发现编译该项目所依赖的CMake packages。至少有一个catkin依赖:
find_package(catkin REQUIRED)
如果该项目还依赖其他packages, 这些package会自动转变为catkin的components。如果直接指定这些packages作为components,而不是用find_package,会更为简单。比如,使用nodelet
find_package(catkin REQUIRED COMPONENTS nodelet)
注意:此处components只添加build dependencies, 而没有 runtime dependencies
也可以这样做,但是比较麻烦:
find_package(