1. CMakeList.txt简介
CMake是一个开源、跨平台的编译、测试和打包工具,它使用比较简单的语言描述编译、安装的过程,输出Makefile或者project文件,再去执行构建。
gcc(GNU Compiler Collection)将源文件编译(Compile)成可执行文件或者库文件;
而当需要编译的东西很多时,需要说明先编译什么,后编译什么,这个过程称为构建(Build)。常用的工具是make,对应的定义构建过程的文件为Makefile;
而编写Makefile对于大型项目又比较复杂,通过CMake就可以使用更加简洁的语法定义构建的流程,CMake定义构建过程的文件为CMakeLists.txt。
2. CMakeLists.txt文件中常用的CMake的语法:
# 设置CMake最低版本要求
cmake_minimum_required(VERSION 3.5.1)
# 设置项目名称和版本
project(pro_name VERSION 1.0)
# 设置C++标准
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED True)
find_package() 查找建构是需要的其他 CMake/Catkin 包
add_message_files() add_service_files() add_action_files 生成Message/Service/Action
generate_messages() 调用消息生成
catkin_package() 指定包的构建信息
add_library()/add_executable()/target_link_libraries() 用于构建的库,可执行代码
install() 安装规则
# 添加源文件到项目
add_executable(${PROJECT_NAME}
${PROJETC_SRCS}
)
file(GLOB PROJETC_SRCS
${CMAKE_CURRENT_SOURCE_DIR}/src/**.cc
)
# 包含Include dependent
target_include_directories(${PROJECT_NAME}
PUBLIC ${CMAKE_CURRENT_BINARY_DIR}
PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}
)
#包含路径
include_directories(
${CMAKE_SOURCE_DIR}
${CMAKE_BINARY_DIR}
${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/src
)
3.常用内置变量:
PROJECT_SOURCE_DIR/CMAKE_SOURCE_DIR/_SOURCE_DIR: 为包含PROJECT()命令的最近一个CMakeLists.txt文件所在的文件夹路径,即最外层CMakeLists.txt所在目录最外层。
PROJECT_BINARY_DIR/CMAKE_BINARY_DIR/_BINARY_DIR: 运行cmake命令的目录,即工程编译发生的路径。
EXECUTABLE_OUTPUT_PATH: 指定最终的可执行文件的位置
LIBRARY_OUTPUT_PATH: 设置库文件的输出目录
CMAKE_CURRENT_SOURCE_DIR:当前CMakeLists.txt所在目录
参考:
https://zhuanlan.zhihu.com/p/367808125
https://blog.csdn.net/qq_33726635/article/details/121896681