CMake基础语法

发布时间:2026/8/17 21:59:12
CMake基础语法 文章目录CMake与Make的关系变量变量类型环境变量系统层级与cmake无关cmake缓存变量cmake普通变量${变量名}set(变量名 值)cmake_minimum_required(VERSION 版本号)project( 工程文件名 )find_package(包名)install(TARGETS 目标文件 DESTINATION 安装位置 )安装目标文件所有类型安装文件夹其他add_executable(可执行文件名 源文件列表)message( 日志类型 打印信息)CMake与Make的关系在linux当中其关系如下注意CMake本身并不提供编译工具仅提供连接关系也就是说仍然需要安装gcc等编译工具变量变量类型环境变量系统层级与cmake无关存在操作系统中用$ENV{}访问cmake缓存变量缓存变量 存在 CMakeCache.txt 中永久用${}访问cmake普通变量普通变量 只在CMake运行期间存在临时用${}访问${变量名}这些变量可以在build目录下的CMakeCache.txt当中查看catCMakeCache.txt|grepPROJECT_NAMEset(变量名 值)设置变量cmake_minimum_required(VERSION 版本号)规定了此CMakeLists.txt所需要的最小的cmake版本project( 工程文件名 )当你写了 project(cpp05_exercise)CMake 会自动定义以下内容基本变量${PROJECT_NAME} # cpp05_exercise${CMAKE_PROJECT_NAME} # cpp05_exercise${PROJECT_SOURCE_DIR} # 源码目录路径${PROJECT_BINARY_DIR} # 构建目录路径如果有版本号${PROJECT_VERSION} # 1.0.0 (如果指定了)${PROJECT_VERSION_MAJOR} # 1${PROJECT_VERSION_MINOR} # 0${PROJECT_VERSION_PATCH} # 0其他相关变量${PROJECT_SOURCE_DIR} # 当前项目的源码目录${PROJECT_BINARY_DIR} # 当前项目的构建目录find_package(包名)用于自动查找功能包#1.最基本形式find_package(rclcpp)#2.必需包找不到就报错find_package(rclcpp REQUIRED)#3.指定版本find_package(Python33.6REQUIRED)install(TARGETS 目标文件 DESTINATION 安装位置 )安装目标文件所有类型install(TARGETS 目标文件 ……DESTINATION 安装到哪里 )install(TARGETS demo01_talker_str demo02_listener_str demo03_talker_stu demo04_listener_stu DESTINATION lib/${PROJECT_NAME})安装文件夹install(DIRECTORY 目标文件夹 ……DESTINATION 安装到哪里 )install(DIRECTORY launch DESTINATION share/${PROJECT_NAME})其他install(FILES file … […])install(SCRIPT file […])install(CODE code […])install(EXPORT export-name […])install(RUNTIME_DEPENDENCY_SET set-name […])add_executable(可执行文件名 源文件列表)添加可执行文件add_executable(demo01_talker_str src/demo01_talker_str.cpp)注意一个可执行文件只能有一个main函数 源文件列表只能有一个main但可以增加别的被调用的cpp在源文件列表当中只需要包含cpp文件即可h文件不用写在里面message( 日志类型 “打印信息”)日志类型STATUS在终端会以 --两个横线加空格为前缀显示WARNING黄色警告构建会继续SEND_ERROR错误跳过生成但继续处理FATAL_ERROR致命错误立即终止处理