一、CMakeLists.txt
CMakeLists.txt 是一个用于构建 CMake 项目的配置文件。CMake 是一个跨平台的构建系统生成工具,用于管理和构建软件项目。CMakeLists.txt 文件是在 CMake 中定义项目的基本配置和构建规则的文本文件。
二、常用指令
1.指定项目所需的最低CMake版本。
cmake_minimum_required(VERSION 3.0.2)
2.定义项目的名称
project(xxx)
3.查找并导入外部依赖库
find_package(catkin REQUIRED COMPONENTS roscpp)
4.用于指定包的依赖关系,由依赖于这个包的其他软件包使用。
catkin_package(
# INCLUDE_DIRS include #包的导出包含路径
# LIBRARIES marker #从项目中导出的库
# CATKIN_DEPENDS roscpp #本项目依赖的其他catkin项目
# DEPENDS system_lib #此项目所依赖的非 catkin CMake 项目
)
5.添加头文件搜索路径,编译器使用这些目录来查找头文件,第一个参数“include”表示包中的include/目录也是路径的一部分。
include_directories(
include
${catkin_INCLUDE_DIRS}
)
6.定义可执行文件的构建规则。指定将要构建的可执行文件的名称,以及它所依赖的源文件。
add_executable(${PROJECT_NAME}_node src/xxx.cpp)
7.定义库文件的构建规则。
add_library(${PROJECT_NAME} src/xxx.cpp)
8.在定义消息类型时,编译的可执行文件依赖这些动态生成的代码,需要使用${PROJECT_NAME}_generate_messages_cpp进行配置。
add_dependencies(${PROJECT_NAME}_node ${PROJECT_NAME}_generate_messages_cpp)
9.设置可执行文件依赖的库。
target_link_libraries(${PROJECT_NAME}_node ${catkin_LIBRARIES})
10.定义目标之间的依赖关系
add_dependencies(xxx xxxx) xxx需要依赖xxxx
11. 消息/服务/动作生成器
add_message_files
(FILES xx.msg)add_service_files()
add_action_files()
12.声明生成消息/服务
/动作需要依赖的消息以及服务
generate_messages(
DEPENDENCIES
std_msgs
)
13.安装
install()
三、在QT环境下进行编译
1.寻找Qt的包
find_package(Qt5 REQUIRED COMPONENTS Widgets )
2.设置
set(CMAKE_AUTOMOC ON)#设置自动生成moc文件,一定要设置
set(CMAKE_AUTOUIC ON)
set(CMAKE_INCLUDE_CURRENT_DIR ON)#设置工程包含当前目录,非必须
3.链接Qt库
target_link_libraries(${PROJECT_NAME}_node Qt5::Widgets )