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

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

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

1. CMake 变量引用的方式

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


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_DIR 和 PROJECT_BINARY_DIR

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

3.2 CMAKE_SOURCE_DIR、PROJECT_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_PATH 和 LIBRARY_OUTPUT_PATH

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

3.7 CMAKE_CURRENT_LIST_FILE 和 CMAKE_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_DIR 和 CMAKE_CURRENT_SOURCE_DIR 添加到当前 CMakeLists.txt 的包含目录中。

5.2 CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE

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

5.3 CMAKE_INCLUDE_PATH 和 CMAKE_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/

你可能感兴趣的文章
python命名空间更改_Python模块xml.etree.ElementTree自动修改xml命名空间键
查看>>
Python命名中尾随下划线有什么好处?
查看>>
Python启动脚本
查看>>
Python听写汇总结果
查看>>
python吊打Excel?屁!那是你不会用!
查看>>
Python合并两张图片 | 先叠透明度再合并 (附Demo)
查看>>
python各进制的表述与转换
查看>>
python各种库安装
查看>>
python可视化matplotlib_如何使用Python中最强大的可视化工具Matplotlib?
查看>>
python可维护性_使用这7大神器,让你的Python 代码更容易于维护
查看>>
python变量的详细教程_Python零基础入门教程之语法入门[变量](第二期)
查看>>
Python变量命名方法-ChatGPT4o作答
查看>>
Python变量与运算符
查看>>
python单元测试之unittest
查看>>
Python单元测试unittest实战
查看>>
python协程实时输出_Python 协程以及事件循环的问题,怎么知道 IO 读取结束了呢?...
查看>>
Python十进制&;包提供错误的结果
查看>>
Python化身“安全老中医”:一键搞定工控系统漏洞,从零基础到精通,收藏这篇就够了!
查看>>
Python加速运行技巧
查看>>
python办公自动化基础遍历文件夹
查看>>