博客
关于我
cmake常用常量和变量(六)
阅读量:559 次
发布时间:2019-03-09

本文共 2174 字,大约阅读时间需要 7 分钟。

CMake 变量引用的方式与常用命令

1. CMake 变量引用的方式

在 CMake 脚本中,变量的引用可以通过 ${} 的方式实现。需要注意的是,在某些特定语句中(如 IFELSE 等),变量引用不需要通过 ${} 而是直接使用变量名。


2. CMake 定义变量的方式

CMake 提供两种定义变量的方式:隐式定义和显式定义。

2.1 隐式定义

隐式定义通常通过某些 CMake 指令自动生成变量。例如,PROJECT 指令会隐式地定义 <projectname>_BINARY_DIR<projectname>_SOURCE_DIR 这两个变量。

2.2 显式定义

显式定义变量的方式是通过 SET 指令来实现的。例如:

SET(HELLO_SRC "main.SOURCE.PATHc")

通过 ${HELLO_SRC} 即可引用这个自定义变量。


3. CMake 常用变量

3.1 CMAKE_BINARY_DIRPROJECT_BINARY_DIR

这两个变量在 in-sourceout-of-source 编译模式下都指向工程编译发生的目录。PROJECT_BINARY_DIRCMAKE_BINARY_DIR 的内容一致。

3.2 CMAKE_SOURCE_DIRPROJECT_SOURCE_DIR<projectname>_SOURCE_DIR

这些变量均指向工程顶层目录,无论是 in-source 还是 out-of-source 编译模式,内容一致。

3.3 CMAKE_CURRENT_SOURCE_DIR

指向当前处理的 CMakeLists.txt 所在的路径。例如,在 src 子目录中使用时,通常等于 <project根目录>/src

3.4 CMAKE_CURRENT_BINARY_DIR

如果是 in-source 编译,CMAKE_CURRENT_BINARY_DIR 等同于 CMAKE_CURRENT_SOURCE_DIR。如果是 out-of-source 编译,则指向目标编译目录。

3.5 CMAKE_MODULE_PATH

用于定义 CMake 模块的路径。通过 SET(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake) 可自定义模块目录。

3.6 EXECUTABLE_OUTPUT_PATHLIBRARY_OUTPUT_PATH

用于重新定义目标文件的存放目录。EXECUTABLE_OUTPUT_PATH 默认通常指向 CMAKE_BINARY_DIR

3.7 CMAKE_CURRENT_LIST_FILECMAKE_CURRENT_LIST_LINE

CMAKE_CURRENT_LIST_FILE 输出调用该 CMakeLists.txt 的完整路径,CMAKE_CURRENT_LIST_LINE 输出当前处理的行号。

3.8 PROJECT_NAME

通过 PROJECT 指令定义的项目名称。


4. 调用环境变量的方式

在 CMake 脚本中,可以通过以下命令调用系统环境变量:

MESSAGE(STATUS "HOME dir: $ENV{HOME}")

4.1 设置环境变量的方式

SET(ENV{变量名} 值)

5. CMake 常用命令

5.1 CMAKE_INCLUDE_CURRENT_DIR

自动将 CMAKE_CURRENT_BINARY_DIRCMAKE_CURRENT_SOURCE_DIR 添加到当前 CMakeLists.txt 的包含目录中。

5.2 CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE

用于将项目提供的头文件目录始终添加在系统头文件目录之前,避免冲突。

5.3 CMAKE_INCLUDE_PATHCMAKE_LIBRARY_PATH

用于指定 include 和 library 目录。这些路径会被自动添加到 CMake 的搜索路径中。


6. 系统信息

CMake 提供了多种变量来获取系统信息:

6.1 系统版本信息

  • CMAKE_MAJOR_VERSION:主版本号(如 2.4.6 中的 2)
  • CMAKE_MINOR_VERSION:次版本号(如 2.4.6 中的 4)
  • CMAKE_PATCH_VERSION:补丁等级(如 2.4.6 中的 6)
  • CMAKE_SYSTEM:系统名称(如 Linux-2.6.22)
  • CMAKE_SYSTEM_NAME:不含版本的系统名称(如 Linux)
  • CMAKE_SYSTEM_VERSION:系统版本(如 2.6.22)
  • CMAKE_SYSTEM_PROCESSOR:处理器名称(如 i686)
  • UNIX:在所有类 UNIX 平台上为 TRUE(包括 OS X 和 cygwin)
  • WIN32:在所有 win32 平台上为 TRUE(包括 cygwin)

6.2 系统环境信息

通过 $ENV{NAME} 可以调用系统环境变量。


以上内容提供了 CMake 中变量引用的方式、变量的定义方法、常用变量的使用方法以及系统信息获取方式的全面解释。

转载地址:http://ifbpz.baihongyu.com/

你可能感兴趣的文章
Objective-C实现fibonacci search斐波那契查找算法(附完整源码)
查看>>
Objective-C实现fibonacci斐波那契算法(附完整源码)
查看>>
Objective-C实现fibonacci斐波那契算法(附完整源码)
查看>>
Objective-C实现FIFO(附完整源码)
查看>>
Objective-C实现FigurateNumber垛积数算法(附完整源码)
查看>>
Objective-C实现finding bridges寻找桥梁算法(附完整源码)
查看>>
Objective-C实现first come first served先到先得算法(附完整源码)
查看>>
Objective-C实现FIR滤波器(附完整源码)
查看>>
Objective-C实现fischer yates shuffle洗牌算法(附完整源码)
查看>>
Objective-C实现FisherYates Shuffle洗牌算法(附完整源码)
查看>>
Objective-C实现fisherYates洗牌算法(附完整源码)
查看>>
Objective-C实现FloodFill洪水填充函数算法(附完整源码)
查看>>
Objective-C实现Floyd-Warshall算法(附完整源码)
查看>>
Objective-C实现FPmax算法(附完整源码)
查看>>
Objective-C实现frequency finder频率探测器算法(附完整源码)
查看>>
Objective-C实现FTP上传文件(附完整源码)
查看>>
Objective-C实现FTP文件上传(附完整源码)
查看>>
Objective-C实现FTP文件下载(附完整源码)
查看>>
Objective-C实现fuzzy operations模糊运算算法(附完整源码)
查看>>
Objective-C实现Gale-Shapley盖尔-沙普利算法(附完整源码)
查看>>