博客
关于我
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】 做一个简单的 http 服务器
查看>>
Python到底能做什么?它的优点在哪?
查看>>
python利用pytorch库导出图像分割算子
查看>>
python利用pyshark监听网卡来抓包其中pyshark中摸索的一些可用参数
查看>>
python利用excel分析过杀漏失
查看>>
python判断汉字数目
查看>>
python判断文件是空的,如果是空的,就删除
查看>>
python判断密码是否正确_python密码判断是否符合要求的方法
查看>>
python判断字符串包含中文_Python 判断字符串是否包含中文
查看>>
python删除第一行_Python 乱码指北:一行删掉根目录
查看>>
Python删除列表元素的三种方法
查看>>
python初步学习-python数据类型-集合(set)
查看>>
python列表生成字典_Python中将字典转换为列表的方法
查看>>
python列表对应元素合并为列表及判断一个列表是几维
查看>>
python+flask计算机毕业设计骨科门诊患者档案管理系统(程序+开题+论文)
查看>>
python+flask计算机毕业设计高校体测管理系统的设计与实现(程序+开题+论文)
查看>>
python+flask计算机毕业设计高校体育赛事系统(程序+开题+论文)
查看>>
python+flask计算机毕业设计高校危化品管理系统(程序+开题+论文)
查看>>
python+flask计算机毕业设计高校教学档案管理系统(程序+开题+论文)
查看>>
python+flask计算机毕业设计高校教学督导平台(程序+开题+论文)
查看>>