本文旨在介绍CMakeLists的常见知识点
文章目录
一、一些部分常识
- 用 # 来进行注释(与python类似),在ros中的CMakeLists里面,注释量非常大
- 方括号([ ])中的内容为可有可无的项目
二、编译配置项的介绍
1.include_directories
代码示例如下:
include_directories(
include
${catkin_INCLUDE_DIRS}
)
include_directories ([AFTER|BEFORE] [SYSTEM] dir1 [dir2 …])
将指定目录添加到编译器的头文件搜索路径之下,指定的目录被解释成当前源码路径的相对路径。此处是将其指向include文件夹中。
注意 [] 方括号表示可有可无
2.add_executable
代码示例如下:
add_executable(velocity_publisher src/velocity_publisher.cpp)
格式如下:add_executable(targetName source1 [source2 …])
以示例代码为介绍对象:
其将 src 文件夹中的 velociti_publisher.cpp 文件指向生成 velocity_publisher 的可执行文件
(若你所需要进行操作的是python文件,那么不需要进行编译,因为python与c的编译性语言不同,解释性语言不需要进行编译生产可执行文件的步骤)
3.target_link_libraries
target_link_libraries(velocity_publisher ${catkin_LIBRARIES})
用于设置链接库。写出需要在编译与生成可执行文件过程中需要链接哪些库来完成编译。
格式:target_link_libraries( … … …)
第一个参数是可执行文件的名称,后面的参数为编译所依赖的库的名称。
以示例为介绍对象:
在编译生成velocity_publisher的时候,依赖catkin_LIBRARIES库。、
4.add_dependencies
add_dependencies(person_publisher ${PROJECT_NAME}_generate_messages_cpp)
用于设置依赖。在定义消息类型时,编译的可执行文件依赖这些动态生成的代码,需要使用${PROJECT_NAME}_generate_messages_cpp进行配置。
格式如下:add_dependencies( []…)
以示例为介绍对象,在设置person_publisher这个消息时需要依赖 ${PROJECT_NAME}_generate_messages_cpp)