CMake可以用于编译C++代码,CMake默认生成的文件CMakeLists.txt内容繁多,在此给出CMakeLists的总体架构和ROS编译功能包实例参考,带注释。
1.总体架构
cmake_minimum_required() #CMake的版本号
project() #项目名称
find_package() #找到编译需要的其他CMake/Catkin package
catkin_python_setup() #catkin新加宏,打开catkin的Python Module的支持
add_message_files() #catkin新加宏,添加自定义Message文件
add_service_files() #catkin新加宏,添加自定义Service文件
add_action_files() #catkin新加宏,添加自定义Action文件
generate_message() #catkin新加宏,生成不同语言版本的msg/srv/action接口
catkin_package() #catkin新加宏,生成当前package的cmake配置,供依赖本包的其他软件包调用
add_library() #生成库
add_executable() #生成可执行二进制文件
add_dependencies() #定义目标文件依赖于其他目标文件,确保其他目标已被构建
target_link_libraries() #链接
catkin_add_gtest() #catkin新加宏,生成测试
install() #安装至本机
2.实例参考
cmake_minimum_required(VERSION 2.8.3)
# 项目名称
project(my_package)
# 编译依赖的包
find_package(catkin REQUIRED COMPONENTS
roscpp
rospy
std_msgs
message_generation
geometry_msgs
)
# 指定需要转换的msg文件
add_message_files(FILES People.msg)
# 只有调用了下面的函数才会生成people.h文件
generate_messages(DEPENDENCIES geometry_msgs)
include_directories(include ${catkin_INCLUDE_DIRS}) # 指定C++头文件路径
link_directories(${catkin_LIBRARY_DIRS}) #指定链接库的路径
# 运行依赖
catkin_package(
CATKIN_DEPENDS message_runtime
)