cmake:cmake-variables(7)

提供信息的变量

CMAKE_AR

  • 静态库归档工具的名称。
  • 它指定创建归档库或静态库的程序的名称。

CMAKE_ARGC

在脚本模式下传递给CMake的命令行参数数。

当以-P脚本模式运行时,CMake将此变量设置为命令行参数的数量。参见【CMAKE_ARGV0】, 1, 2…

CMAKE_ARGV0

在脚本模式下传递给CMake的命令行参数。

当以-P脚本模式运行时,CMake将该变量设置为第一个命令行参数。然后它还设置了CMAKE_ARGV1, CMAKE_ARGV2,…以此类推,直到给出的命令行参数的数量。也看到CMAKE_ARGC。

CMAKE_BINARY_DIR

到构建树顶层的路径。

这是到当前CMake构建树顶层的完整路径。对于源代码内构建,这将与CMAKE_SOURCE_DIR相同。

在-P脚本模式下运行时,CMake将变量CMAKE_BINARY_DIR、CMAKE_SOURCE_DIR、CMAKE_CURRENT_BINARY_DIR和CMAKE_CURRENT_SOURCE_DIR设置为当前工作目录。

CMAKE_BUILD_TOOL

此变量仅用于向后兼容。它包含与CMAKE_MAKE_PROGRAM相同的值。用那个变量代替。

CMAKE_CACHE_MAJOR_VERSION

用于创建CMakeCache.txt文件的CMake的主要版本

它存储用于写入CMake缓存文件的CMake的主要版本。只有在先前创建的缓存文件上运行不同版本的CMake时,情况才会有所不同。

CMAKE_CACHE_MINOR_VERSION

用于创建CMakeCache.txt文件的CMake的次要版本

它存储用于写入CMake缓存文件的CMake的次要版本。只有在先前创建的缓存文件上运行不同版本的CMake时,情况才会有所不同。

CMAKE_CACHE_PATCH_VERSION

用于创建CMakeCache.txt文件的CMake修补程序版本

它存储用于写入CMake缓存文件的CMake的修补程序版本。只有在先前创建的缓存文件上运行不同版本的CMake时,情况才会有所不同。

CMAKE_CACHEFILE_DIR

包含CMakeCache.txt文件的目录。

这是包含CMakeCache.txt文件的目录的完整路径。这与CMAKE_BINARY_DIR相同。

CMAKE_CFG_INTDIR

自版本3.21以来已弃用

CMAKE_COMMAND

cmake(1)可执行文件的完整路径。

这是CMake可执行文件CMake(1)的完整路径,对于希望在可移植系统命令中使用CMake -E选项的自定义命令来说,CMake(1)非常有用。(例如/usr/local/bin/cmake)

CMAKE_CPACK_COMMAND

版本3.13中的新功能。

安装CMake时cpack(1)命令的完整路径。

这是CPack可执行文件CPack(1)的完整路径,对于希望将cmake(1)-E选项用于可移植系统命令的自定义命令非常有用。

CMAKE_CROSSCOMPILING

旨在指示CMake是否是交叉编译,详情请参见这里

CMAKE_CROSSCOMPILING_EMULATOR

3.3新版功能。

这个变量只在CMAKE_CROSSCOMPILING打开时使用。它应该指向主机系统上可以运行为目标系统构建的可执行文件的命令。

如果这个变量包含一个分号分隔的列表,那么第一个值就是命令,其余的值是它的参数。

该命令将用于运行try_run()生成的可执行文件,这将避免手动填充TryRunResults。cmake文件。

它也被用作可执行文件的CROSSCOMPILING_EMULATOR目标属性的默认值。

CMAKE_CTEST_COMMAND

CMake下安装的ctest(1)命令的完整路径。

这是CTest可执行文件CTest(1)的完整路径,对于希望为可移植系统命令使用cmake(1) -E选项的自定义命令来说,CTest(1)非常有用。

CMAKE_CURRENT_BINARY_DIR

当前正在处理的二进制目录的路径。

这是cmake当前正在处理的构建目录的完整路径。add_subdirectory()添加的每个目录将在构建树中创建一个二进制目录,在处理该目录时将设置此变量。对于内源代码构建,这是正在处理的当前源目录。

在-P脚本模式下运行时,CMake将变量CMAKE_BINARY_DIR、CMAKE_SOURCE_DIR、CMAKE_CURRENT_BINARY_DIR和CMAKE_CURRENT_SOURCE_DIR设置为当前工作目录。

CMAKE_CURRENT_FUNCTION

3.17新版功能。

当在function()内部执行代码时,该变量包含当前函数的名称。它对于诊断或调试消息很有用。

参见CMAKE_CURRENT_FUNCTION_LIST_DIR, CMAKE_CURRENT_FUNCTION_LIST_FILE和CMAKE_CURRENT_FUNCTION_LIST_LINE。

CMAKE_CURRENT_FUNCTION_LIST_DIR

3.17新版功能。

当在function()中执行代码时,该变量包含定义当前函数的列表文件的完整目录。

在CMake模块中,使用一些额外的文件是很常见的做法,例如在替换CMake变量后要复制的模板。在这种情况下,函数需要以一种不依赖于调用函数的位置的方式知道在哪里定位这些文件。如果没有CMAKE_CURRENT_FUNCTION_LIST_DIR,执行该操作的代码通常会使用以下模式:

set(_THIS_MODULE_BASE_DIR "${CMAKE_CURRENT_LIST_DIR}")

function(foo)
  configure_file(
    "${_THIS_MODULE_BASE_DIR}/some.template.in"
    some.output
  )
endfunction()

在函数中使用CMAKE_CURRENT_FUNCTION_LIST_DIR可以消除对额外变量的需要,否则该变量将在函数的作用域之外可见。以上示例可以用更简洁、更健壮的形式编写:

function(foo)
  configure_file(
    "${CMAKE_CURRENT_FUNCTION_LIST_DIR}/some.template.in"
    some.output
  )
endfunction()

参见CMAKE_CURRENT_FUNCTION, CMAKE_CURRENT_FUNCTION_LIST_DIR和CMAKE_CURRENT_FUNCTION_LIST_LINE。

CMAKE_CURRENT_FUNCTION_LIST_FILE

版本3.17中的新功能。

在function()中执行代码时,该变量包含定义当前函数的列表文件的完整路径

参见CMAKE_CURRENT_FUNCTION, CMAKE_CURRENT_FUNCTION_LIST_FILE和CMAKE_CURRENT_FUNCTION_LIST_LINE。

CMAKE_CURRENT_FUNCTION_LIST_LINE

版本3.17中的新功能。

在function()中执行代码时,此变量包含定义当前函数的listfile中的行号。

参见CMAKE_CURRENT_FUNCTION, CMAKE_CURRENT_FUNCTION_LIST_DIR和CMAKE_CURRENT_FUNCTION_LIST_FILE。

CMAKE_CURRENT_LIST_DIR

当前正在处理的列表文件的完整目录。

当CMake处理项目中的列表文件时,这个变量将始终设置为当前正在处理的列表文件(CMAKE_CURRENT_LIST_FILE)所在的目录。该值具有动态作用域。

  • 当CMake在源文件中启动处理命令时,它将该变量设置为该文件所在的目录。
  • 当CMake从文件中完成处理命令时,它恢复先前的值。

因此,宏或函数内部变量的值是调用调用堆栈中最底部条目的文件的目录,而不是包含宏或函数定义的文件的目录。

另请参见CMAKE_CURRENT_LIST_FILE。

CMAKE_CURRENT_LIST_FILE

当前正在处理的列表文件的完整路径。

当CMake在你的项目中处理列表文件时,这个变量将总是被设置为当前正在处理的。该值具有动态作用域。当CMake在源文件中启动处理命令时,它将该变量设置为文件的位置。当CMake从文件中完成处理命令时,它恢复先前的值。因此,宏或函数内部变量的值是调用调用堆栈中最底部条目的文件,而不是包含宏或函数定义的文件。

另请参见CMAKE_PARENT_LIST_FILE。

CMAKE_CURRENT_LIST_LINE

正在处理的当前文件的行号。

这是cmake当前正在处理的文件的行号。

如果CMake当前正在处理由cmake_language(DEFER)命令调度的延迟调用,这个变量的计算结果deferred,而不是特定的行号。

CMAKE_CURRENT_SOURCE_DIR

当前正在处理的源目录的路径。

这是cmake当前正在处理的源目录的完整路径。

在-P脚本模式下运行时,CMake将变量CMAKE_BINARY_DIR、CMAKE_SOURCE_DIR、CMAKE_CURRENT_BINARY_DIR和CMAKE_CURRENT_SOURCE_DIR设置为当前工作目录。

CMAKE_DEBUG_TARGET_PROPERTIES

启用目标属性的跟踪输出。详情请参见这里

CMAKE_DIRECTORY_LABELS

3.10新版功能。

为当前目录指定标签。

这用于初始化LABELS目录属性。

CMAKE_DL_LIBS

包含dloopen和dlclose的库名。

包含dloopen和dlclose的库的名称,在大多数UNIX机器上通常是-ldl。

CMAKE_DOTNET_TARGET_FRAMEWORK

3.17新版功能。

目标的DOTNET_TARGET_FRAMEWORK属性的默认值。

该变量用于初始化所有目标上的DOTNET_TARGET_FRAMEWORK属性。有关其他信息,请参阅target属性。

这个变量只适用于Visual Studio Generators VS 2010及以上版本。

CMAKE_DOTNET_TARGET_FRAMEWORK_VERSION

这个变量只适用于Visual Studio Generators VS 2010及以上版本。

CMAKE_EDIT_COMMAND

cmake-gui(1)或ccmake(1)的完整路径。当不为IDE使用“额外”生成器时,仅为Makefile generator定义。

这是可以图形化编辑缓存的CMake可执行文件的完整路径。例如,cmake-gui(1)或ccmake(1)。

CMAKE_EXECUTABLE_SUFFIX

此平台上可执行文件的后缀。比如,windows下是.exe

CMAKE_EXECUTABLE_SUFFIX_< LANG>将覆盖语言< LANG>

CMAKE_EXTRA_GENERATOR

用来建造这个项目的额外generator 。请参见cmake generator (7)。

当使用Eclipse、CodeBlocks、CodeLite、Kate或Sublime生成器时,CMake会生成makefile (CMAKE_GENERATOR),并为各自的IDE生成额外的项目文件。这个IDE项目文件生成器存储在CMAKE_EXTRA_GENERATOR(例如Eclipse CDT4)中。

CMAKE_EXTRA_SHARED_LIBRARY_SUFFIXES

共享库的附加后缀。

除CMAKE_SHARED_LIBRARY_SUFFIX指定的扩展之外的共享库扩展(如果有的话)。CMake在分析由目标链接的库时使用它来识别外部共享库文件。

CMAKE_FIND_DEBUG_MODE

3.17新版功能。

打印以下命令的额外find调用信息到标准错误:

  • find_program()
  • find_library()
  • find_file()
  • find_path()
  • find_package()

输出是为人类使用而设计的,而不是为解析而设计的。启用此变量相当于使用cmake–debug find,并添加了对find调用子集启用调试的功能。

set(CMAKE_FIND_DEBUG_MODE TRUE)
find_program(...)
set(CMAKE_FIND_DEBUG_MODE FALSE)

默认unset

CMAKE_FIND_PACKAGE_NAME

3.1.1新版功能。

在加载find模块时由find_package()命令定义,以记录调用者指定的包名。详细信息请参见命令文档。

CMAKE_FIND_PACKAGE_SORT_DIRECTION

3.7新版功能。

CMAKE_FIND_PACKAGE_SORT_ORDER使用的排序方向。它可以假设以下值之一:

  • DEC:排序以降序模式进行。找到的最高的文件夹将首先进行测试。
  • ASC:排序以升序方式进行。找到的最低的文件夹将首先进行测试。

如果CMAKE_FIND_PACKAGE_SORT_ORDER没有设置或设置为NONE,则该变量无效。

CMAKE_FIND_PACKAGE_SORT_ORDER

3.7新版功能。

使用find_package()对找到的包进行排序的默认顺序。它可以假设以下值之一:

  • NONE:不尝试对包进行排序。将选择找到的第一个有效的包。
  • NAME:在选择一个包之前,按字典顺序排序。
  • NATURAL:使用自然顺序对包进行排序(参见strverscmp(3) manual),即将相邻的数字作为整数进行比较

当find_package()找到同一个库的多个版本时,可以使用自然排序来返回最高版本。例如,假设已经找到了以下库:

  • libX-1.1.0
  • libX-1.2.9
  • libX-1.2.10

通过设置NATURAL顺序,我们可以选择版本号最高的libX-1.2.10。

set(CMAKE_FIND_PACKAGE_SORT_ORDER NATURAL)
find_package(libX CONFIG)

排序方向可以使用CMAKE_FIND_PACKAGE_SORT_DIRECTION变量来控制(默认情况下递减,例如lib-B将在lib-A之前测试)。

CMAKE_GENERATOR

用于构建项目的生成器。看到cmake-generators(7)。

用于生成生成文件的生成器的名称。(例如Unix Makefiles, Ninja等)

这个变量的值永远不应该被项目代码修改。生成器可以通过cmake(1) -G选项选择,在cmake-gui(1)中交互式地选择,或者通过CMAKE_GENERATOR环境变量。

CMAKE_GENERATOR_INSTANCE

3.11新版功能。

用户提供的特定于生成器的实例规范。

当有多个实例可用时,一些CMake生成器支持选择本地构建系统的实例。如果用户指定了一个实例(例如,通过设置这个缓存条目或通过CMAKE_GENERATOR_INSTANCE环境变量),或者在第一次配置构建树时选择了一个默认实例之后,该值将在这个变量中可用。

这个变量的值永远不应该被项目代码修改。CMAKE_TOOLCHAIN_FILE变量指定的工具链文件可以初始化CMAKE_GENERATOR_INSTANCE作为缓存项。一旦给定的构建树被初始化为该变量的特定值,更改该值将产生未定义的行为。

仅在特定的生成器上支持实例规范:

对于Visual Studio 15 2017生成器(以及以上版本),它指定了所选VS实例的VS安装目录的绝对路径。

有关允许的实例值,请参阅本地构建系统文档。

CMAKE_GENERATOR_PLATFORM

没用,请参见这里

CMAKE_GENERATOR_TOOLSET

没用,请参见这里

CMAKE_IMPORT_LIBRARY_PREFIX

链接到的导入库的前缀。

如果在此平台上使用,则用于导入库名称的前缀。

CMAKE_IMPORT_LIBRARY_PREFIX_< LANG>覆盖了语言< LANG>。

CMAKE_IMPORT_LIBRARY_SUFFIX

链接到的导入库的后缀。

如果在此平台上使用,则用于导入库名称的后缀。

CMAKE_IMPORT_LIBRARY_SUFFIX_< LANG>覆盖了语言< LANG>。

CMAKE_JOB_POOL_COMPILE

此变量用于初始化所有目标上的JOB_POOL_COMPILE属性。有关其他信息,请参见JOB_POOL_COMPILE。

CMAKE_JOB_POOL_LINK

此变量用于初始化所有目标上的JOB_POOL_LINK属性。有关其他信息,请参见JOB_POOL_LINK。

CMAKE_JOB_POOL_PRECOMPILE_HEADER

3.17新版功能。

此变量用于初始化所有目标上的JOB_POOL_PRECOMPILE_HEADER属性。有关其他信息,请参见JOB_POOL_PRECOMPILE_HEADER。

CMAKE_JOB_POOLS

3.11新版功能。

如果JOB_POOLS全局属性没有设置,则使用该变量的值。有关更多信息,请参见JOB_POOLS。

CMAKE_< LANG>_COMPILER_AR

版本3.9中的新功能。

围绕ar的包装器为编译器添加了适当的–plugin选项。

另请参见:CMAKE_AR.

CMAKE_< LANG>_COMPILER_RANLIB

版本3.9中的新功能。

围绕ranlib的包装器为编译器添加了适当的–plugin选项。

另请参见:CMAKE_RANLIB。

CMAKE_< LANG>_LINK_LIBRARY_SUFFIX

版本3.16中的新功能。

链接到的库的特定于语言的后缀。

在Windows上用作库文件名.lib结尾的后缀。

CMAKE_LINK_LIBRARY_SUFFIX

链接到的库的后缀。

在Windows上用作库文件名.lib结尾的后缀。

CMAKE_LINK_SEARCH_END_STATIC

看不懂

CMAKE_LINK_SEARCH_START_STATIC

看不懂

CMAKE_MAJOR_VERSION

CMAKE_VERSION变量的第一个版本号组件。

CMAKE_MAKE_PROGRAM

用到的时候再说

CMAKE_MATCH_COUNT

3.2新版功能。

与最后一个正则表达式匹配的次数。

当使用正则表达式匹配时,CMake用匹配内容填充CMAKE_MATCH_变量。当匹配表达式被填充时,CMAKE_MATCH_COUNT变量保存匹配表达式的数量。

CMAKE_MATCH_< n>

看不懂

CMAKE_MINIMUM_REQUIRED_VERSION

CMake的< min >版本用于在当前变量范围或任何父变量范围内对cmake_minimum_required(version)命令的最近一次调用。

CMAKE_MINOR_VERSION

CMAKE_VERSION变量的第二个版本号组件。

CMAKE_NETRC

3.11新版功能。

这个变量用于初始化文件(下载)和文件(上传)命令和ExternalProject模块的NETRC选项。有关其他信息,请参见这些命令。

本地选项优先于此变量。

CMAKE_NETRC_FILE

3.11新版功能。

这个变量用于初始化file(下载)和file(上传)命令和ExternalProject模块的NETRC_FILE选项。有关其他信息,请参见这些命令。

本地选项优先于此变量。

CMAKE_PARENT_LIST_FILE

包含当前文件的CMake文件的完整路径。

当处理由include()或find_package()加载的CMake文件时,这个变量包含包含它的文件的完整路径。include堆栈的顶部总是当前目录的CMakeLists.txt。另请参见CMAKE_CURRENT_LIST_FILE。

CMAKE_PATCH_VERSION

CMAKE_VERSION变量的第三个版本号组件。

CMAKE_PROJECT_DESCRIPTION

你可能感兴趣的:(C++)