CMake变量是CMake构建系统中的基础组件之一,提供了一种灵活的方式来管理和配置项目的构建过程。变量在CMake中被广泛用于存储配置选项、文件路径、编译设置等信息。本文将详细介绍CMake变量的使用方法、实践技巧和注意事项。
使用set
命令来定义变量:
set(VAR_NAME "Value")
通过${}
语法来引用变量:
message("Variable value: ${VAR_NAME}")
CMake变量可以存储列表,非常适用于管理多个源文件或库:
set(SOURCES file1.cpp file2.cpp file3.cpp)
以下是一个实际的CMake脚本示例,展示了变量的定义和使用:
cmake_minimum_required(VERSION 3.10)
project(ExampleProject)
set(SOURCE_FILES main.cpp helper.cpp)
add_executable(MyApp ${SOURCE_FILES})
set(VAR_NAME "value" CACHE TYPE "Description")
。list(APPEND VAR_NAME item)
来动态构建列表。类别 | 变量名 | 描述 |
---|---|---|
项目和源代码信息 | CMAKE_SOURCE_DIR | 项目的顶级源代码目录。 |
CMAKE_CURRENT_SOURCE_DIR | 当前处理的CMakeLists.txt的源代码目录。 | |
CMAKE_BINARY_DIR | 项目的顶级构建目录(binary tree)。 | |
CMAKE_CURRENT_BINARY_DIR | 当前处理的CMakeLists.txt的构建目录。 | |
编译器和工具设置 | CMAKE_C_COMPILER | C编译器的完整路径。 |
CMAKE_CXX_COMPILER | C++编译器的完整路径。 | |
CMAKE_COMPILER_IS_GNUCXX | 如果是GNU编译器,则为TRUE。 | |
构建类型和编译选项 | CMAKE_BUILD_TYPE | 构建类型,例如Debug 或Release 。 |
CMAKE_C_FLAGS | 用于C编译的标志。 | |
CMAKE_CXX_FLAGS | 用于C++编译的标志。 | |
平台和操作系统信息 | CMAKE_SYSTEM_NAME | 运行CMake的系统名称,如Linux 、Windows 等。 |
CMAKE_SYSTEM_PROCESSOR | 目标处理器的名称,如x86_64 、ARM 等。 | |
WIN32 | 如果目标平台是Windows,则为TRUE。 | |
UNIX | 如果目标平台是Unix或类Unix系统,则为TRUE。 | |
APPLE | 如果目标平台是Apple系统,则为TRUE。 | |
安装和路径 | CMAKE_INSTALL_PREFIX | 安装路径前缀,用于指定安装目录。 |
CMAKE_MODULE_PATH | 指定额外的CMake模块搜索路径。 | |
第三方库和工具 | CMAKE_FIND_ROOT_PATH | 用于指定第三方库搜索的根路径。 |
CMAKE_PREFIX_PATH | 指定寻找第三方库文件的额外路径。 | |
特定语言支持 | CMAKE_<LANG>_STANDARD | 设置特定语言(如C 、CXX )的标准版本。 |
CMAKE_<LANG>_EXTENSIONS | 启用或禁用特定语言的扩展。 | |
测试和文档 | BUILD_TESTING | 控制是否构建测试目标。 |
CMAKE_DOXYGEN_EXECUTABLE | 指定Doxygen工具的路径,用于生成文档。 | |
跨平台构建 | CMAKE_CROSSCOMPILING | 如果正在进行交叉编译,则为TRUE。 |
CMAKE_SYSTEM_VERSION | 目标系统的版本,用于交叉编译。 |