当前位置: 首页 > news >正文

常用 CMake 内置变量合集与说明

0. 参考资料

1. CMake 官方变量文档

1. 路径类变量(与 ${CMAKE_SOURCE_DIR} 类似)

这些变量通常用来获取 CMake 当前项目的源码目录、构建目录等信息。

变量名含义示例值
CMAKE_SOURCE_DIR最顶层 CMakeLists.txt 所在目录(工程源码根目录)/home/user/myproject
PROJECT_SOURCE_DIR当前 project() 命令所在项目的顶层目录(通常等同于 CMAKE_SOURCE_DIR,但多项目时不同)/home/user/myproject
CMAKE_BINARY_DIR最顶层构建目录(build 目录)/home/user/myproject/build
PROJECT_BINARY_DIR当前 project() 命令所在项目的构建目录/home/user/myproject/build
CMAKE_CURRENT_SOURCE_DIR当前被处理的 CMakeLists.txt 所在目录(源码路径)/home/user/myproject/src/module1
CMAKE_CURRENT_BINARY_DIR当前被处理的 CMakeLists.txt 对应的构建目录/home/user/myproject/build/src/module1
CMAKE_CURRENT_LIST_DIR当前正在处理的 CMake 文件所在的文件夹路径(可以是 .cmake 脚本所在路径)/home/user/myproject/cmake/modules
CMAKE_CURRENT_LIST_FILE当前正在处理的 CMake 文件的完整路径/home/user/myproject/cmake/modules/my_config.cmake
CMAKE_CURRENT_LIST_LINE当前 CMake 文件被解析到的行号42
CMAKE_MODULE_PATH额外的 find_package() 查找 .cmake 模块的目录列表(可由用户设置)/home/user/myproject/cmake/modules

📌 路径类使用举例

message("工程根目录: ${CMAKE_SOURCE_DIR}")
message("当前源码目录: ${CMAKE_CURRENT_SOURCE_DIR}")
message("当前构建目录: ${CMAKE_CURRENT_BINARY_DIR}")

2. 编译器 / 平台信息变量

变量名含义
CMAKE_SYSTEM_NAME目标系统名称(如 Linux / Windows / Darwin
CMAKE_SYSTEM_PROCESSORCPU 架构(如 x86_64 / arm
CMAKE_C_COMPILERC 编译器路径
CMAKE_CXX_COMPILERC++ 编译器路径
CMAKE_C_COMPILER_ID, CMAKE_CXX_COMPILER_ID编译器标识(GNU/Clang/MSVC
CMAKE_CXX_STANDARD使用的 C++ 标准版本(如 11, 17
CMAKE_GENERATOR当前 CMake 使用的构建系统生成器(如 Unix Makefiles, Ninja, Visual Studio 16 2019

3. 项目信息变量

变量名含义
PROJECT_NAMEproject() 定义的项目名称
PROJECT_VERSIONproject() 定义的项目版本
PROJECT_SOURCE_DIR当前项目源码路径
PROJECT_BINARY_DIR当前项目构建路径

4. 构建结果相关变量

变量名含义
CMAKE_RUNTIME_OUTPUT_DIRECTORY可执行文件输出目录
CMAKE_LIBRARY_OUTPUT_DIRECTORY动态库输出目录
CMAKE_ARCHIVE_OUTPUT_DIRECTORY静态库输出目录
CMAKE_INSTALL_PREFIXmake install 默认安装路径(Linux 默认 /usr/local

5. 开关选项变量

变量名含义
CMAKE_BUILD_TYPE单配置生成器的构建类型(DebugReleaseRelWithDebInfoMinSizeRel
BUILD_SHARED_LIBS默认是否构建为共享库(ONOFF
CMAKE_VERBOSE_MAKEFILE是否打印编译全命令(ON 更详细)

6. 运行时环境变量

CMake 可以通过 $ENV{VAR_NAME} 访问环境变量:

message("PATH 环境变量: $ENV{PATH}")

7. 附加说明

  • 大部分变量在 CMake > Help > Variables 里都有说明:CMake 官方变量文档
  • ${VAR_NAME}变量引用语法CMAKE_SOURCE_DIR 等都是内置变量,可以直接被引用。
  • CMAKE_ 前缀几乎都是全局变量,而 PROJECT_/CMAKE_CURRENT_ 这样的是相对于当前 project / 当前目录作用域的变量。

常用变量速记表

获取值类型常用变量
工程根源码目录${CMAKE_SOURCE_DIR}
当前源码目录${CMAKE_CURRENT_SOURCE_DIR}
工程构建目录${CMAKE_BINARY_DIR}
当前构建目录${CMAKE_CURRENT_BINARY_DIR}
当前 CMake 文件路径${CMAKE_CURRENT_LIST_FILE}
当前 CMake 文件所在目录${CMAKE_CURRENT_LIST_DIR}
项目名${PROJECT_NAME}
编译器路径/类型${CMAKE_CXX_COMPILER} / ${CMAKE_CXX_COMPILER_ID}
系统信息${CMAKE_SYSTEM_NAME} / ${CMAKE_SYSTEM_PROCESSOR}

建议

如果习惯性需要查看有哪些内置变量,可在 CMakeLists.txt 里加一段:

get_cmake_property(_variableNames VARIABLES)
foreach (_variableName ${_variableNames})message(STATUS "${_variableName} = ${${_variableName}}")
endforeach()

这样能把当前 CMake 能访问的所有变量和值全部打印出来,方便查找。

http://www.dtcms.com/a/344670.html

相关文章:

  • Python 环境变量:从基础到实战的灵活配置之道
  • Logstash——输出(Output)
  • Jenkins自动化部署服务到Kubernetes环境
  • 云计算学习100天-第27天
  • python程序函数计时
  • unity资源领取反作弊工具加密器
  • 递归思路:从DFS到二叉树直径的实战(通俗易懂)
  • redis设置密码及配置conf
  • OpenSCA开源社区每日安全漏洞及投毒情报资讯|21th Aug. , 2025
  • 异常值检测:孤立森林模型(IsolationForest)总结
  • 并发编程:浅析LockSupport工具
  • 大数据世界的开拓者:深入浅出MapReduce分布式计算经典范式
  • MyBatis-Flex
  • 【中微半导体】嵌入式C语言,函数指针表驱动状态机( 代码风格抽象,在 C 里模拟了“对象“、“多态“的效果)
  • 【日常学习】2025-8-22 类属性和实例属性+小白学调试
  • 数据结构 -- 树
  • Vue3+Ant-design-vue+SSE实现实时进度条
  • 前端快讯看这里
  • 基于导频的OFDM系统的信道估计(使用LS估计算法)
  • 突击复习清单(高频核心考点)
  • 【C++高阶六】哈希与哈希表
  • 线程池拒绝策略踩坑
  • uniappx与uniapp的区别
  • 【UniApp打包鸿蒙APP全流程】如何配置并添加UniApp API所需的鸿蒙系统权限
  • MySQL B+树索引使用
  • QT之QSS的使用方法和常用控件的样式设置
  • Qt 的事件类QEvent及其他子类事件的开发详解:从基础到实践的全方位指南
  • 高并发用户数峰值对系统架构设计有哪些影响?
  • Qt-窗口类部件
  • 极验demo(float)(一)