文章目录

  • 一、控制构建的环境变量
  • 二、改变行为的环境变量
  • 三、其他

一、控制构建的环境变量

环境变量 说明 可设置的值
CMAKE_APPLE_SILICON_PROCESSOR 在MacOS系统中,用于告诉CMake使用哪个架构进行编译 arm64 / x86_64
CMAKE_BUILD_PARALLEL_LEVEL 构建时要使用的最大并发进程数 数值
CMAKE_BUILD_TYPE 构建类型 Debug / Release / RelWithDebInfo / MinSizeRel
CMAKE_CONFIGURATION_TYPES 多配置生成器上的可用构建类型 Debug / Release / RelWithDebInfo / MinSizeRel
CMAKE_CONFIG_TYPE
CMAKE_EXPORT_COMPILE_COMMANDS 在生成期间启用/禁用编译命令的输出,如果开启则生成的文件compile_commands.json,包含所有编译单元所执行的指令 ON / OFF
CMAKE_GENERATOR 指定生成器,可以在cmake指令中使用-G Unix Makefiles, Ninja, etc.
CMAKE_GENERATOR_INSTANCE 用户提供的特定生成器的特定生成器实例 例如:对于Visual Studio 15 2017 Generator(及更高版本),这将指定所选VS实例的VS安装目录的绝对路径。
CMAKE_GENERATOR_PLATFORM 用户提供的特定特定平台的特定生成器 例如:对于Visual Studio 15 2017 Generator(及更高版本),这将指定特定的平台架构。
CMAKE_GENERATOR_TOOLSET 用户提供的本地构建系统工具集
CMAKE_INSTALL_MODE
CMAKE_<LANG>_COMPILER_LAUNCHER 其中,<LANG>为 C, CXX, Fortran, HIP, ISPC, OBJC, OBJCXX, or CUDA
CMAKE_<LANG>_FLAGS 其中,<LANG>为 C, CXX, Fortran, HIP, ISPC, OBJC, OBJCXX, or CUDA
CMAKE_<LANG>_LINKER_LAUNCHER 其中,<LANG>为 C, CXX, Fortran, HIP, ISPC, OBJC, OBJCXX, or CUDA
CMAKE_MSVCIDE_RUN_PATH
CMAKE_NO_VERBOSE 实际发布时,使用它去掉一些冗余信息 ON / OFF
CMAKE_OSX_ARCHITECTURES MacOS系统指定架构
CMAKE_TOOLCHAIN_FILE 工具链文件路径,交叉编译的工具链toolchain.cmake,该文件里面设置了一系列CMAKE变量和属性,比如C_COMPILER,CXX_COMPILER等
DESTDIR 重新指定所有安装文件的路径, make install DESTDIR= < $CUSTOM_PREFIX>在configure或cmake时,指定了要安装的路径后,以这种方式make install安装的文件会通通安装到以$CUSTOM_PREFIX为前缀的目录中,这样,开发者直接对这目录中的文件打包,即可发布使用
LDFLAGS 只有在第一个配置上使用cmake来确定默认链接器标志,之后LDFLAGS 的值存储在缓存中作为CMAKE_EXE_LINKER_FLAGS_INIT,CMAKE_SHARED_LINKER_FLAGS_INIT 和CMAKE_MODULE_LINKER_FLAGS_INIT。对于任何配置运行(包括第一个配置),如果定义了等效的CMAKE_<TYPE>_LINKER_FLAGS_INIT变量,则将忽略环境变量。
<PackageName>_ROOT find_package(<PackageName>)将用到此变量设置的package路径,例如要find_package(Foo),则需要设置 Foo_ROOT,否则会报CMP0074的警告 Package的路径
VERBOSE 实际发布时,使用它去掉一些冗余信息

二、改变行为的环境变量

环境变量 说明 可设置的值
CMAKE_PREFIX_PATH 设置库的搜索路径,可用于 find_package(), find_program(), find_library(), find_file(), find_path() 在改路径查找库 路径

三、其他

环境变量 说明 可设置的值
ROJECT_BINARY_DIR 工程的二进制文件路径
CMAKE_CURRENT_BINARY_DIR 外部编译时,指的是target目录,内部编译时,指的是顶级目录
ROJECT_SOURCE_DIR 工程源文件路径
CMAKE_SOURCE_DIR 工程根目录路径,如果有多层子目录,在子目录CMakeLists文件中获取到的也是根目录的路径
CMAKE_CURRENT_SOURCE_DIR 当前源文件路径,即CMakeList.txt所在的目录
CMAKE_CURRENT_LIST_DIR 当前CMakeList.txt所在的目录
CMAKE_CURRENT_LIST_FILE 当前CMakeList.txt文件完整路径
CMAKE_CURRENT_LIST_LINE 当前所在的行
CMAKE_MODULE_PATH 如果工程复杂,可能需要编写一些cmake模块,这里通过SET指定这个变量
EXECUTABLE_OUTPUT_PATH 当前工程生成可执行文件,生成的可执行文件存放的目录
LIBRARY_OUTPUT_DIR 当前工程生成库文件,生成的库文件存放的目录
BINARY_OUTPUT_DIR 生成的二进制文件存放的目录
BUILD_SHARED_LIBS 是否编译动态库,与add_library的第二个参数意思一样,设置ON则生成动态库,否则生成静态库 ON / OFF

sample_004

CMake - 环境变量相关推荐

  1. cmake 常用变量和常用环境变量查表手册

    cmake 常用变量和常用环境变量查表手册 一,cmake 变量引用的方式: 前面我们已经提到了,使用${}进行变量的引用.在 IF 等语句中,是直接使用变量名而不通过${}取值 二,cmake 自定 ...

  2. 【Tools】cmake 常用变量和常用环境变量查表手册---整理

    原文链接:https://blog.csdn.net/gubenpeiyuan/article/details/8667279 一.cmake 变量引用的方式: 前面我们已经提到了,使用${}进行变量 ...

  3. cmake学习(二)常用变量和常用环境变量

    一.变量的引用方式是使用"${}",在IF中,不需要使用这种方式,直接使用变量名即可 二.自定义变量使用SET(OBJ_NAME xxxx),使用时${OBJ_NAME} 三.cm ...

  4. cmake 常用变量和常用环境变量

    一,cmake 变量引用的方式: 前面我们已经提到了,使用${}进行变量的引用.在 IF 等语句中,是直接使用变量名而不通过${}取值 二,cmake 自定义变量的方式: 主要有隐式定义和显式定义两种 ...

  5. CMake设置Visual Studio工程的调试环境变量和工作目录cwd的方法

    1.设置在Visual Studio中调试的环境变量,此设置仅仅在VS中点击那个绿色三角运行时有效,与你直接双击打开exe文件运行无关,有效避免多版本动态库全部写入系统环境变量的污染问题: # Vis ...

  6. cmake:在各级目录之间共享变量(cmake cache变量)

    摘要: 本文记录一下 CMake 变量的定义.原理及其使用.CMake 变量包含 Normal Variables.Cache Variables.通过 set 指令可以设置两种不同的变量.也可以在 ...

  7. 64位OpenCV库生成32位库并配置环境变量

    如果要获取X64的OpenCV,只需要把下面的CMake设置改为X64 下载的时候只有64位的OpenCV,有时候我们的程序可能是32位的,或者在VS中为X86的,好像这两个用起来没有什么区别,那我们 ...

  8. PowerShell批量设置PATH环境变量

    PowerShell批量设置PATH环境变量 Code #requires -version 4.0 #requires #-runasadministrator# Get the ID and se ...

  9. CentOS7.7安装MySQL5.6并配置环境变量(详细版)

    i. tar包下载 官网下载 https://dev.mysql.com/downloads/mysql/ 网盘获取 链接:https://pan.baidu.com/s/1DpULc0qQ4hqx6 ...

最新文章

  1. Elasticsearch学习之路(一)
  2. Alexa偷录私密对话并发送,继诡笑之后出现又一神举动
  3. 什么是GDT,LDT,GDTR及LDTR?
  4. 移动端分步注册_移动应用程序的可用性测试:分步指南
  5. 图【数据结构F笔记】
  6. centos5.8安装mysql5.3_CentOS 5.8 64位 源码安装mysql5.5.28
  7. mongodb 持久化 mysql_(转)mongodb与mysql区别
  8. 笔记本电脑主板电池_深圳外星人笔记本电脑维修服务中心
  9. 为什么三表联查查出的数据每条出现好多次_独家解读!京东高可用分布式流数据存储的架构设计...
  10. 第22节 软件工程知识
  11. [MSSQL]SQL简繁转换函数
  12. MQTT-mosquitto学习笔记
  13. apicloud菜鸟教程_APICloud 对象之 Method
  14. 音频和视频标签 与其他标签
  15. Linux 安装WebLogic9.2 MP2(图文详解 教程下载)
  16. JavaScript语法糖写法--JS代码优化
  17. 关于在POI以SAX方式解析,会导出拼音(音标)的问题解决
  18. 【pymysql模块】
  19. 工序外协与委外加工区别
  20. grok在python 中的使用

热门文章

  1. 打破双亲委派机制有什么用_你确定你真的理解双亲委派了吗?!
  2. 托软件,本软件仅供研究学习代码交流
  3. 浏览器无法连接网络,但QQ可以登录
  4. windows右下角弹广告怎么办?
  5. N EQU ($-M)/2 是什么意思
  6. FTP上传文件 名称中文乱码问题
  7. java基础(for循环):八个for循环案例
  8. IDEA cannot determine what kind of files the chosen items contain.
  9. windows下WORD 和DWORD
  10. 小技巧: 在 CMD 中查询 Whois