博客
关于我
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-numpy(2)数组的操作
查看>>
Python-Numpy的tile函数用法
查看>>
python-open函数
查看>>
Python-Pandas-将特定函数应用于给定级别-多索引数据框架
查看>>
python-queue队列通信
查看>>
python-ros No module named PyKDL
查看>>
python-social-auth 是否需要会话
查看>>
Python再获年度编程语言,微软或成最大赢家
查看>>
python-week5
查看>>
Python写表情包搜索工具(非常详细)零基础入门到精通,收藏这一篇就够了
查看>>
Python-【1】配置
查看>>
Python-从子文件夹执行绝对导入
查看>>
Python-刷新页面,直到元素可单击
查看>>
PYTHON-唤醒+VOSK+DEEPSEEK+离线合成-实现纯离线大模型问答
查看>>
Python-在Dash回调中重用函数
查看>>
PYTHON-基本数据类型-元祖类型,字典类型,集合类型
查看>>
python-外观模式
查看>>
Python-如何使用FastAPI和uvicorn.run而不阻塞线程?
查看>>
Python-字典
查看>>
python-字符串
查看>>