1.重要性:Cmakelist.txt能否配置正确,影响到功能包能否被编译通过;
2.编译流程:CMake的的的的的的的的的的的的根据Cmakelist.txt配置文件编译生成的Makefile文件;再根据生成文件的配置文件编译...
3.所涉及的大部分配置文件:
cmake_minimum_required(VERSION 2.8.3) | 所需的最低的cmake的的的的的的的编译版本号 |
<strong>project(PROJECT_NAME)</strong> | <strong>指定项目名称,取与功能包名相同</strong> |
<strong>find_package(catkin REQUIRED COMPONENTS
roscpp
rospy
std_msgs<span style="color:#3366ff"> </span></strong> <strong><span style="color:#3366ff"> message_generation </span>
)<span style="color:#3366ff"> </span>
</strong> | 用于指出该包所需的依赖包, 编译后生成指向源文件,库 文件,头文件路径的CMake的的的的的的的 变量 |
add_message_files(...)
add_service_files(...)
add_action_files(...)
| 指出编译所需消息/服务/动作文件 |
generate_messages(...) | 将消息/服务/动作生成对应的头文件,待程序中引用 |
catkin_package(
...
CATKIN_DEPENDS message_runtime ...
...) | 指出所需依赖的信息(对内声明窗口)/也可用于导出依赖的库文件(对外声明窗口) |
add_dependencies(add_executable_name $ {PROJECT_NAME} _generate_messages_cpp) | 指出可执行程序目标文件依赖于消息/服务/动作生成的头文件 |
set_target_properties(add_executable_name
PROPERTIES OUTPUT_NAME add_executable PREFI“”) | 由于目标文件名称必须唯一,这条指令可用于进行更改名称 |
set_target_properties(python_module_library
PROPERTIES LIBRARY_OUTPUT_DIRECTORY $ {CATKIN_DEVEL_PREFIX} / $ {CATKIN_PACKAGE_PYTHON_DESTINATION}) | 用于更改目标文件的输出路径 |
include_directories(包括$ {Boost_INCLUDE_DIRS} $ {catkin_INCLUDE_DIRS}) | 指出头文件路径 |
add_executable(myProgram src / main.cpp src / some_file.cpp src / another_file.cpp) | 指出生成可执行文件名,源文件路径 |
add_library($ {PROJECT_NAME} $ {$ {PROJECT_NAME} _SRCS}) | 生成共享库 |
target_link_libraries(<add_executable_Name>,<lib1>,<lib2>,... <libN>) | 指出可执行文件链接于共享库 |
注:执行顺序
find_package(catkin REQUIRED COMPONENTS ...)
add_message_files(...)
add_service_files(...)
add_action_files(...)
generate_messages(...)
......
catkin_package(...)
......
add_library()
add_executable()
......
target_link_libraries()