文章目录
- 项目和源码路径变量
- 构建和安装路径变量
- 编译器和工具链变量
- 系统信息变量
- 编译和链接标志变量
- 查找库和包的变量
- 其他常用变量
CMake 是一个跨平台的自动化构建系统,广泛应用于 C/C++ 及其他语言的项目构建。在 CMake 脚本中,变量起着关键作用,用于存储路径、编译器标志和库名称等信息。CMake 提供了许多预定义的变量,这些变量可以被项目使用或修改以控制构建过程。
项目和源码路径变量
CMAKE_SOURCE_DIR
: 项目顶层源码目录的绝对路径。对于多级项目,这是最顶层的
CMAKE_SOURCE_DIR。
PROJECT_SOURCE_DIR
: 当前项目的源码目录。如果项目使用
project() 命令定义,这通常是调用 project() 时的源码目录。
CMAKE_CURRENT_SOURCE_DIR
: 当前正在处理的
CMakeLists.txt 文件所在的源码目录。
CMAKE_BINARY_DIR
: 项目顶层构建目录的绝对路径。
PROJECT_BINARY_DIR
: 当前项目的构建目录。
CMAKE_CURRENT_BINARY_DIR
: 当前正在处理的
CMAKE_SOURCE_DIR 对应的构建目录。
构建和安装路径变量
CMAKE_BUILD_TYPE
: 指定构建类型(如
Debug, Release, RelWithDebInfo, MinSizeRel)。这会影响编译器的优化标志和调试信息。
CMAKE_INSTALL_PREFIX
: 安装目标的根目录(例如
/usr/local 或 C:\Program Files\MyApp)。
install() 命令会相对于此路径进行安装。
CMAKE_LIBRARY_OUTPUT_DIRECTORY
: 构建的库文件(动态库或静态库)的输出目录。
CMAKE_RUNTIME_OUTPUT_DIRECTORY
: 构建的可执行文件的输出目录。
CMAKE_ARCHIVE_OUTPUT_DIRECTORY
: 构建的存档文件(如静态库
.lib, .a)的输出目录。
编译器和工具链变量
CMAKE_C_COMPILER
: C 编译器的完整路径。
CMAKE_CXX_COMPILER
: C++ 编译器的完整路径。
CMAKE_Fortran_COMPILER
: Fortran 编译器的完整路径(如果启用 Fortran 支持)。
CMAKE_LINKER
: 链接器的完整路径。
CMAKE_AR
: 静态库归档工具(ar)的路径。
CMAKE_RANLIB
: 为静态库生成索引的工具(ranlib)的路径。
系统信息变量
CMAKE_SYSTEM_NAME
: 操作系统名称(如
Linux, Windows, Darwin)。
CMAKE_SYSTEM_VERSION
: 操作系统的版本号。
CMAKE_SYSTEM_PROCESSOR
: 目标处理器架构(如
x86_64, armv7l)。
WIN32
: 如果目标系统是 Windows,则为
TRUE。
UNIX
: 如果目标系统是 Unix 类系统(包括 Linux, macOS),则为
TRUE。
APPLE
: 如果目标系统是 Apple macOS,则为
TRUE。
编译和链接标志变量
CMAKE_C_FLAGS
: 传递给 C 编译器的通用标志。
CMAKE_CXX_FLAGS
: 传递给 C++ 编译器的通用标志。
CMAKE_C_FLAGS_<CONFIG>
: 传递给 C 编译器的特定配置标志(如
CMAKE_C_FLAGS_DEBUG, CMAKE_C_FLAGS_RELEASE)。
CMAKE_CXX_FLAGS_<CONFIG>
: 传递给 C++ 编译器的特定配置标志。
CMAKE_EXE_LINKER_FLAGS
: 链接可执行文件时传递给链接器的标志。
CMAKE_SHARED_LINKER_FLAGS
: 链接动态库时传递给链接器的标志。
查找库和包的变量
CMAKE_PREFIX_PATH
: 一个路径列表,CMake 会在这些路径下查找库、头文件等。这对于指定非标准安装位置的依赖库非常有用(例如你提到的 Boost 库路径配置)。
CMAKE_MODULE_PATH
: 一个路径列表,CMake 会在这些路径下查找自定义的
.cmake 模块文件。
<PackageName>_DIR
: 指定特定包的查找路径。例如,
Boost_DIR 可以用来告诉 CMake 在哪里查找 Boost 库的配置文件。
其他常用变量
CMAKE_ROOT
: CMake 系统安装的根目录。
CMAKE_CURRENT_LIST_FILE
: 当前正在被处理的 CMake 文件的完整路径。
CMAKE_CURRENT_LIST_DIR
: 当前正在被处理的 CMake 文件所在的目录。
PROJECT_NAME
: 通过
project() 命令设置的项目名称。
PROJECT_VERSION
: 通过
project() 命令设置的项目版本。
这些变量是 CMake 构建系统的核心组成部分,熟练掌握它们对于编写高效、灵活的
CMakeLists.txt 文件至关重要。

雷达卡


京公网安备 11010802022788号







