CMake中的变量: 改变构建行为的变量

文章目录

变量名称 描述
BUILD_SHARED_LIBS 全局标志,用于在启用时使add_library()创建共享库。 如果存在并且为true,则这将导致所有库被构建为共享库,除非该库被明确添加为静态库。这个变量通常作为option()添加到项目中,这样项目的每个用户都可以决定是使用共享库还是静态库来构建项目。
CMAKE_ABSOLUTE_DESTINATION_FILES 使用绝对目的地路径安装的文件列表。 此变量由CMake生成的CMake_install.CMake脚本定义。它可以由源于这些安装脚本的程序或脚本使用(只读)。这被一些CPack生成器(例如RPM)使用。
CMAKE_ADD_CUSTOM_COMMAND_DEPENDS_EXPLICIT_ONLY 是否在add_custom_command()中默认启用DEPENDS_EXPLICIT_ONLY选项。
CMAKE_APPBUNDLE_PATH 以分号分隔的目录列表,指定find_program()和find_package()命令使用的macOS应用程序包的搜索路径。
CMAKE_BUILD_TYPE 指定单个配置生成器(例如Makefile generators或Ninja)上的生成类型。典型的值包括Debug、Release、RelWithDebInfo和MinSizeRel,但也可以定义自定义构建类型。 当首次创建新的构建树时,该变量由项目中调用的第一个project()或enable_language()命令初始化。如果设置了CMAKE_BUILD_TYPE环境变量,则使用其值。否则,在启用语言时,将选择特定于工具链的默认值。默认值通常是一个空字符串,但这通常是不可取的,其他标准构建类型通常更合适。
CMAKE_CLANG_VFS_OVERLAY 当使用clang cl为windows进行交叉编译时,此变量可以是指向clang虚拟文件系统yaml文件的绝对路径,这将使clang cl能够解析区分大小写的文件系统上的windows标头名称。
CMAKE_CODEBLOCKS_COMPILER_ID 更改生成的CodeBlocks项目文件中的编译器id。 CodeBlocks使用自己的编译器id字符串,该字符串不同于CMAKE__compiler_id。如果此变量为空,CMake将尝试自动识别CodeBlocks编译器id。否则,指定的字符串将在CodeBlocks项目文件中使用。有关有效的编译器id字符串,请参阅CodeBlocks文档。
CMAKE_CODEBLOCKS_EXCLUDE_EXTERNAL_FILES 更改CodeBlocks生成器创建项目文件的方式。 如果此变量的计算结果为ON,生成器将从项目文件中排除位于项目根目录之外的任何文件。
CMAKE_CODELITE_USE_TARGETS 更改CodeLite生成器创建项目文件的方式。 如果此变量在顶级CMakeLists.txt文件的末尾计算为ON,则生成器将基于目标而非项目创建项目文件。
CMAKE_COLOR_DIAGNOSTICS 全程启用颜色诊断。 此变量使用三种状态:ON、OFF和未定义。 未定义时:Makefile生成器将CMAKE_COLOR_Makefile变量初始化为ON。它控制颜色构建系统消息。GNU/Clang编译器不使用任何颜色诊断标志进行调用。 打开时:Makefile生成器默认情况下生成彩色构建系统消息。CMAKE_COLOR_MAKEFILE未初始化,但可以显式设置为OFF以禁用彩色构建系统消息。GNU/Clang编译器的调用带有启用颜色诊断的标志(-fcolor diagnostics)。 关闭时:默认情况下,Makefile生成器不会生成彩色构建系统消息。CMAKE_COLOR_MAKEFILE未初始化,但可以显式设置为ON以启用彩色构建系统消息。GNU/Clang编译器的调用带有禁用颜色诊断的标志(-fno颜色诊断)。 如果设置了CMAKE_COLOR_DIAGNOSTICS环境变量,则使用其值。否则,CMAKE_COLOR_DIAGNOSTICS为否
CMAKE_COLOR_MAKEFILE 使用Makefile生成器时启用颜色输出。 启用后,生成的Makefile将产生彩色输出。默认值为ON。
CMAKE_CONFIGURATION_TYPES 以分号分隔的列表形式指定多配置生成器(例如Visual Studio、Xcode或Ninja multi-config)上的可用生成类型(配置)。典型的条目包括Debug、Release、RelWithDebInfo和MinSizeRel,但也可以定义自定义构建类型。 当首次创建新的构建树时,该变量由项目中调用的第一个project()或enable_language()命令初始化。如果设置了CMAKE_CONFIGURATION_TYPES环境变量,则使用其值。否则,默认值是特定于生成器的。
CMAKE_DEPENDS_IN_PROJECT_ONLY 当在目录中设置为TRUE时,Makefile Generators生成的构建系统将被设置为仅考虑对出现在源目录或二进制目录中的源文件的依赖关系。对这些目录之外的源文件的更改不会导致重建。 在构建过程中通过外部头文件获取某些源文件的情况下,应谨慎使用此方法。
CMAKE_DISABLE_FIND_PACKAGE_ 用于禁用find_package()调用的变量。 通过将变量CMAKE_DISABLE_find_package_设置为TRUE,可以禁用项目中的每个非REQUIRED find_package()调用。这可以用于构建没有可选包的项目,尽管该包已安装。
CMAKE_ECLIPSE_GENERATE_LINKED_RESOURCES 这个缓存变量由Eclipse项目生成器使用。
CMAKE_ECLIPSE_GENERATE_SOURCE_PROJECT 这个缓存变量由Eclipse项目生成器使用。
CMAKE_ECLIPSE_MAKE_ARGUMENTS 这个变量包含Eclipse调用make工具时使用的参数。默认情况下,它被初始化为保存标志以启用并行构建(通常使用-j)。
CMAKE_ECLIPSE_RESOURCE_ENCODING 这个缓存变量告诉EclipseCDT4项目生成器在生成的项目文件中将资源编码设置为给定值。如果未给定任何值,则不会设置任何编码。
CMAKE_ECLIPSE_VERSION 在使用Eclipse项目生成器时,CMake会尝试查找Eclipse可执行文件并检测其版本。根据找到的版本,某些功能会被启用或禁用。如果CMake找不到Eclipse,它将假定支持的最旧版本是EclipseCallisto(3.2)。
CMAKE_ERROR_DEPRECATED 是否为不推荐使用的功能发出错误。 如果为TRUE,则使用不推荐使用的功能将出现致命错误。如果未设置此变量,则CMake的行为就像设置为FALSE一样。
CMAKE_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION 一旦遇到具有绝对install DESTINATION的文件,请要求cmake_install.cmake脚本出错。 致命错误是在安装有问题的文件之前发出的。此变量由CMake生成的CMake_install.CMake脚本使用。如果在运行脚本时将此变量设置为ON,则可能会收到来自脚本的致命错误消息。
CMAKE_EXECUTE_PROCESS_COMMAND_ECHO 如果此变量设置为STDERR、STDOUT或NONE,则execute_process()调用中的命令将打印到STDERR或STDOUT,或者根本不打印。
CMAKE_EXPORT_COMPILE_COMMANDS 在生成期间启用/禁用编译命令的输出。
CMAKE_EXPORT_PACKAGE_REGISTRY 当CMP0090设置为NEW时,启用导出(PACKAGE)命令。
CMAKE_EXPORT_NO_PACKAGE_REGISTRY CMP0090未设置为NEW时,禁用export(PACKAGE)命令。
CMAKE_FIND_APPBUNDLE 此变量影响find_*命令如何在macOS应用程序包和unix风格的包组件之间进行选择。
CMAKE_FIND_FRAMEWORK 在Darwin或支持macOS应用程序捆绑包的系统上,CMAKE_FIND_APPBUNDLE变量可以设置为空或以下值之一: FIRST:尝试在标准程序之前查找应用程序捆绑包。这是达尔文的默认设置。 LAST:尝试在标准程序之后查找应用程序捆绑包。 ONLY:仅尝试查找应用程序捆绑包。 NEVER:永远不要尝试查找应用程序捆绑包。
CMAKE_FIND_LIBRARY_CUSTOM_LIB_SUFFIX 指定一个<suffix>来告诉find_library()命令在通常要搜索的每个lib目录之前先在lib<suffx>目录中进行搜索。 这将覆盖相关全局属性的行为: FIND_LIBRARY_USE_LIB32_path FIND_LIBRARY_USE_LIB64_path FIND_LIBRARY_USE_LIBX32_path
CMAKE_FIND_LIBRARY_PREFIXES 查找库时要前置的前缀。 这指定在find_library()命令查找库时要添加到库名称的前缀。在UNIX系统上,这通常是lib,这意味着当试图查找foo库时,它将查找libfoo。
CMAKE_FIND_LIBRARY_SUFFIXES 查找库时要附加的后缀。 这指定在find_library()命令查找库时要添加到库名称的后缀。在Windows系统上,这通常是.lib,根据编译器的不同,还有.dll.a、.a(例如GCC和Clang),因此当它试图查找foo库时,它会查找[]foo.lib和/或[]foo[.dll].a,这取决于所使用的编译器和CMAKE_find_library_PREFIXES中指定的。
CMAKE_FIND_NO_INSTALL_PREFIX 从CMAKE_SYSTEM_PREFIX_PATH中排除CMAKE_INSTALL_PREFIX和CMAKE_STAGING_PREFIX变量的值。默认情况下,CMake会将这些项目目标前缀添加到CMake_SYSTEM_PREFIX_PATH中,以支持构建一系列依赖包并将其安装到公共前缀中。将CMAKE_FIND_NO_INSTALL_PREFIX设置为TRUE可抑制此行为。 CMAKE_SYSTEM_PREFIX_PATH在第一次调用project()或enable_language()命令时初始化。因此,必须在此之前设置CMAKE_FIND_NO_INSTALL_PREFIX才能生效。用户可以在命令行上将变量设置为高速缓存条目来实现这一点。 请注意,由于其他原因,前缀仍可能被搜索,例如与CMake安装的前缀相同,或者是内置的系统前缀。
CMAKE_FIND_PACKAGE_PREFER_CONFIG 如果未指定模式,请告诉find_package()在"Module"模式之前尝试"配置"模式。 当在没有MODULE选项的情况下使用缩减签名时,命令find_package()在没有显式模式的情况下运行。在这种情况下,默认情况下,CMake首先通过搜索Find.CMake模块来尝试Module模式。如果失败,CMake将使用Config模式搜索包。 将CMAKE_FIND_PACKAGE_PREFER_CONFIG设置为TRUE,告诉FIND_PACKAGE()在返回模块模式之前先使用配置模式进行搜索。 当开发人员编译了通用库的自定义版本并希望将其链接到依赖项目时,此变量可能很有用。如果此变量设置为TRUE,则在查找开发人员自定义构建的库之前,将阻止依赖项目对find_package()的调用选择系统的find.cmake模块所定位的默认库。
CMAKE_FIND_PACKAGE_RESOLVE_SYMLINKS 设置为TRUE可告诉find_package()调用解析_DIR值中的符号链接。 这在包搜索路径指向代理目录的用例中很有帮助,在该目录中会出现指向实际包位置的符号链接。默认情况下,这是不启用的,因为也有一些常见的用例应该保留符号链接。
CMAKE_FIND_PACKAGE_TARGETS_GLOBAL 设置为TRUE会将find_package()发现的所有IMPORTED目标提升到全局作用域。 将其设置为TRUE类似于将GLOBAL指定为find_package()的参数。默认值为OFF。
CMAKE_FIND_PACKAGE_WARN_NO_MODULE 如果在没有显式模式的情况下调用,请告诉find_package()发出警告。
CMAKE_FIND_ROOT_PATH 要在文件系统上搜索的根路径的分号分隔列表。 此变量在交叉编译时最有用。CMake使用此列表中的路径作为替代根,以查找具有find_package()、find_library()等的文件系统项。
CMAKE_FIND_ROOT_PATH_MODE_INCLUDE 此变量控制FIND_FILE()和FIND_PATH()是否使用CMAKE_FIND_ROOT_PATH和CMAKE_SYSROOT。 如果设置为ONLY,则只搜索CMAKE_FIND_ROOT_PATH中的根。如果设置为"NEVER",则CMAKE_FIND_ROOT_PATH中的根将被忽略,并且只使用主机系统根。如果设置为BOTH,则将搜索主机系统路径和CMAKE_FIND_ROOT_PATH中的路径。
CMAKE_FIND_ROOT_PATH_MODE_LIBRARY 此变量控制find_library()是否使用CMAKE_FIND_ROOT_PATH和CMAKE_SYSROOT。 如果设置为ONLY,则只搜索CMAKE_FIND_ROOT_PATH中的根。如果设置为"NEVER",则CMAKE_FIND_ROOT_PATH中的根将被忽略,并且只使用主机系统根。如果设置为BOTH,则将搜索主机系统路径和CMAKE_FIND_ROOT_PATH中的路径。
CMAKE_FIND_ROOT_PATH_MODE_PACKAGE 此变量控制find_package()是否使用CMAKE_FIND_ROOT_PATH和CMAKE_SYSROOT。 如果设置为ONLY,则只搜索CMAKE_FIND_ROOT_PATH中的根。如果设置为"NEVER",则CMAKE_FIND_ROOT_PATH中的根将被忽略,并且只使用主机系统根。如果设置为BOTH,则将搜索主机系统路径和CMAKE_FIND_ROOT_PATH中的路径。
CMAKE_FIND_ROOT_PATH_MODE_PROGRAM 此变量控制find_program()是否使用CMAKE_FIND_ROOT_PATH和CMAKE_SYSROOT。 如果设置为ONLY,则只搜索CMAKE_FIND_ROOT_PATH中的根。如果设置为"NEVER",则CMAKE_FIND_ROOT_PATH中的根将被忽略,并且只使用主机系统根。如果设置为BOTH,则将搜索主机系统路径和CMAKE_FIND_ROOT_PATH中的路径。
CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH 控制以下命令的默认行为,以确定是否搜索cmake特定环境变量提供的路径: find_program() find_file() find_library() find_package() find_path() 这在交叉编译环境中非常有用。默认情况下,不设置此变量,这相当于它的值为TRUE。为上述命令提供的显式选项优先于此变量。
CMAKE_FIND_USE_CMAKE_PATH 控制以下命令的默认行为,以确定是否搜索cmake特定环境变量提供的路径: find_program() find_file() find_library() find_package() find_path() 这在交叉编译环境中非常有用。默认情况下,不设置此变量,这相当于它的值为TRUE。为上述命令提供的显式选项优先于此变量。
CMAKE_FIND_USE_CMAKE_SYSTEM_PATH 控制以下命令的默认行为,以确定是否搜索cmake特定环境变量提供的路径: find_program() find_file() find_library() find_package() find_path() 这在交叉编译环境中非常有用。默认情况下,不设置此变量,这相当于它的值为TRUE。为上述命令提供的显式选项优先于此变量。
CMAKE_FIND_USE_INSTALL_PREFIX 控制以下命令的默认行为,以确定是否搜索CMAKE_INSTALL_PREFIX和CMAKE_STAGING_PREFIX变量中的位置。 find_program() find_file() find_library() find_package() find_path() 这在交叉编译环境中非常有用。由于与CMAKE_FIND_NO_INSTALL_PREFIX的向后兼容性,FIND命令的行为会根据此变量是否存在而更改。
CMAKE_FIND_USE_PACKAGE_REGISTRY 控制find_package()命令的默认行为,用于是否搜索用户包注册表提供的路径。 默认情况下,未设置此变量,并且行为将回退到不推荐使用的CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY变量所确定的行为。如果也未设置,则find_package()将使用用户包注册表,除非提供了NO_CMAKE_package_Registry选项。 当两者都设置时,此变量优先于CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY。 在某些情况下,例如,为了只定位系统范围内的安装,在搜索包时不希望使用用户包注册表。如果CMAKE_FIND_USE_PACKAGE_REGISTRY变量为FALSE,则所有FIND_PACKAGE()命令都将跳过用户程序包注册表,就像它们是用NO_CMAKE_PACKAGE_REGISTRY参数调用的一样。
CMAKE_FIND_USE_PACKAGE_ROOT_PATH 控制以下命令的默认行为,以确定是否搜索_ROOT变量提供的路径: find_program() find_file() find_library() find_package() find_path() 默认情况下,不设置此变量,这相当于它的值为TRUE。为上述命令提供的显式选项优先于此变量。
CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH 控制以下命令的默认行为,以确定是否搜索标准系统环境变量提供的路径: find_program() find_file() find_library() find_package() find_path() 这在交叉编译环境中非常有用。默认情况下,不设置此变量,这相当于它的值为TRUE。为上述命令提供的显式选项优先于此变量。
CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY 控制通过find_Package()命令搜索系统包注册表。 默认情况下,未设置此变量,并且行为将回退到不推荐使用的CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY变量所确定的行为。如果也未设置,则find_package()将使用系统包注册表,除非提供了NO_CMAKE_System_package_Registry选项。 当两者都设置时,此变量优先于CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY。 在某些情况下,例如,为了只定位用户特定的安装,在搜索包时不希望使用系统包注册表。如果CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY变量为FALSE,则所有FIND_PACKAGE()命令都将跳过系统包注册表,就像它们是用NO_CMAKE_SYSTEM-PACKAGE_REGISTRY参数调用的一样。
CMAKE_FRAMEWORK_PATH 以分号分隔的目录列表,指定find_library()、find_package()、find_path()和find_file()命令使用的macOS框架的搜索路径。
CMAKE_IGNORE_PATH 对于find_program()、find_library()、find_file()和find_path(),在其中一个列出的目录中找到的任何文件都将被忽略。列出的目录不递归应用,因此任何要忽略的子目录也必须显式列出。CMAKE_IGNORE_PATH不会影响这四个命令使用的搜索前缀。要忽略搜索前缀下的各个路径(例如bin、include、lib等),每个路径必须在CMAKE_ignore_path中作为完整的绝对路径列出。CMAKE_IGNORE_REFIX_PATH提供了一种更合适的方法来忽略整个搜索前缀。 find_package()也会受到CMAKE_IGNORE_PATH的影响,但仅适用于配置模式搜索。在其中一个指定目录中找到的任何<Name>Config.cmake或<Name>-Config.cmake文件都将被忽略。此外,由于向后兼容性的原因,在CMAKE_IGNORE_PATH中找到的任何搜索前缀都将被跳过,但新代码应该更喜欢
CMAKE_IGNORE_PREFIX_PATH 要由find_program()、find_library()、find_file()和find_path()命令忽略的搜索前缀的分号分隔列表。find_package()命令的Config模式也会忽略前缀(Module模式不受影响)。要忽略特定目录,请参阅CMAKE_ignore_PATH。 在某些系统目录包含不兼容但可能可链接的库的交叉编译环境中,忽略搜索位置可能很有用。例如,在交叉编译的集群环境中,这允许用户忽略包含用于前端机器的库的目录。 默认情况下,CMAKE_IGNORE_PREFIX_PATH为空。它是由项目或最终用户设置的。
CMAKE_INCLUDE_DIRECTORIES_BEFORE 默认情况下,是否在include_directories()中附加或预附加目录。 此变量影响include_directories()命令的默认行为。将该变量设置为ON相当于在该命令的所有使用中使用BEFORE选项。
CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE 是否强制准备项目包含目录。 此变量影响编译器命令行中生成的include目录的顺序。如果设置为ON,则会首先出现CMAKE_SOURCE_DIR和CMAKE_BINARY_DIR。
CMAKE_INCLUDE_PATH 用分号分隔的目录列表,指定find_file()和find_path()命令的搜索路径。默认情况下,它为空,由项目设置。 还有一个环境变量CMAKE_INCLUDE_PATH,用作搜索目录的附加列表。
CMAKE_INSTALL_DEFAULT_COMPONENT_NAME install()命令中使用的默认组件。 如果使用install()命令而不使用COMPONENT参数,则这些文件将被分组到默认组件中。此默认安装组件的名称将取自此变量。它默认为"Unspecified"。
CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS install()和file(install)在安装文件期间隐式创建的目录的默认权限。 如果调用make-install并隐式创建目录,则它们将获得由CMAKE_install_DEFAULT_DIRECTORY_permissions变量设置的权限,如果未设置该变量,则获得特定于平台的默认权限。 如果未通过install()命令显式安装但需要在特定路径上安装文件,则会创建隐式创建的目录。此类位置的示例是由于设置CMAKE_INSTALL_PREFIX而创建的目录。 CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS变量的预期内容是INSTALL()命令PERMISSIONS部分可以使用的权限列表。
CMAKE_INSTALL_MESSAGE CMAKE_INSTALL_MESSAGE变量可以设置为控制打印哪些消息: ALWAYS:打印"正在安装"和"最新"消息。 LAZY:打印正在安装但不是最新消息。 NEVER:既不打印"正在安装"消息,也不打印最新消息。 其他值具有未定义的行为,可能无法诊断。 如果未设置此变量,则默认行为为ALWAYS。
CMAKE_INSTALL_PREFIX Install()使用的安装目录。 如果调用了make-install或生成了install,则该目录将预先添加到所有安装目录中。此变量在UNIX上默认为/usr/local,在Windows上默认为c:/Program Files/${PROJECT_NAME}。
CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT 当CMake_INSTALL_PREFIX刚刚初始化为其默认值时,通常在新构建树中首次运行CMake时,CMake会将此变量设置为TRUE值。
CMAKE_KATE_FILES_MODE 此缓存变量由Kate项目生成器使用,并控制将项目文件中的文件条目设置为何种模式。 可能的值有AUTO、SVN、GIT、HG、FOSSIL和LIST。 当设置为LIST时,CMake将把CMake已知的源文件列表放在项目文件中。当设置为SVN、GIT、HG或FOSSIL时,CMake将相应地将生成的项目设置为Subversion、GIT、Mercurial或FOSSIL,然后Kate将使用相应的命令行工具检索项目中的文件列表。当取消设置或设置为AUTO时,CMake将尝试检测源目录是否是git或svn签出的一部分,并将相应的条目放入项目文件中。
CMAKE_KATE_MAKE_ARGUMENTS 此缓存变量由Kate项目生成器使用。 这个变量包含Kate调用make工具时使用的参数。默认情况下,它被初始化为保存标志以启用并行构建(通常使用-j)。
CMAKE_LIBRARY_PATH 用分号分隔的目录列表,指定find_library()命令的搜索路径。默认情况下,它为空,由项目设置。 还有一个环境变量CMAKE_LIBRARY_PATH,用作搜索目录的附加列表。
CMAKE_LINK_DIRECTORIES_BEFORE 默认情况下,是在link_directories()中附加目录还是预附加目录。 此变量影响link_directories()命令的默认行为。将该变量设置为ON相当于在该命令的所有使用中使用BEFORE选项。
CMAKE_LINK_LIBRARIES_ONLY_TARGETS 设置此变量可在创建非导入目标时初始化其LINK_LIBRARIES_ONLY_TARGETS属性。将其设置为true可以额外检查target_link_libraries()命名的所有可以作为目标名称的项是否都是现有目标的名称。有关详细信息,请参阅目标属性文档。
CMAKE_MAXIMUM_RECURSION_DEPTH CMake脚本的最大递归深度。它打算在命令行上用-DCMAKE_MAXIMUM_RECURSION_DEPTH=设置,或者由需要大递归深度的项目在CMakeLists.txt中设置。
CMAKE_MESSAGE_CONTEXT 当cmake--log上下文命令行选项或CMAKE_MESSAGE_CONTEXT_SHOW变量启用时,MESSAGE()命令会将CMAKE_MESSAGE_CONTEXT列表转换为一个由方括号包围的点分隔字符串,并将其置于日志级别NOTICE及以下消息的每一行之前。 为了有效地记录上下文,项目通常应该将一个项APPEND和POP_BACK添加到CMAKE_MESSAGE_CONTEXT的当前值,而不是替换它。项目不应该假设源树顶部的消息上下文为空,因为在某些情况下,上下文可能已经设置好了(例如分层项目)。
CMAKE_MESSAGE_CONTEXT_SHOW 将此变量设置为true可以显示message()命令记录的每一行的上下文(有关上下文本身的指定方式,请参阅CMAKE_MESSAGE_CONTEXT)。 此变量是在cmake命令行上提供--log上下文选项的替代选项。尽管命令行选项将仅适用于该一次CMake运行,但将CMake_MESSAGE_CONTEXT_SHOW设置为true作为缓存变量将确保后续CMake的运行将继续显示消息上下文。 项目不应设置CMAKE_MESSAGE_CONTEXT_SHOW。它适用于用户,以便他们可以控制是否在消息中包含上下文。
CMAKE_MESSAGE_INDENT message()命令连接该列表中的字符串,对于NOTICE及以下的日志级别,它会在消息的每一行中预先添加结果字符串。
CMAKE_MESSAGE_LOG_LEVEL 设置时,此变量指定message()命令使用的日志记录级别。有效值与cmake程序的--log级别命令行选项的有效值相同。如果设置了此变量,并提供了--log级别的命令行选项,则命令行选项优先。 使用此变量的主要优点是在CMake运行之间保持日志级别。将其设置为缓存变量将确保后续CMake运行将继续使用所选的日志级别。 项目不应该设置这个变量,它是为用户准备的,这样他们就可以根据自己的需要控制日志级别。
CMAKE_MFC_FLAG 将MFC库用于可执行文件或dll。 允许使用Microsoft基础类(MFC)。对于静态MFC库,它应该设置为1,对于共享MFC库,应该设置为2。这在Visual Studio项目文件中使用。
CMAKE_MODULE_PATH 以分号分隔的目录列表,使用正斜杠表示,在检查CMake附带的默认模块之前,指定要由include()或find_package()命令加载的CMake模块的搜索路径。默认情况下为空。它将由项目设置。
CMAKE_POLICY_DEFAULT_CMP CMake Policy CMP<NNNN>在其他情况下未设置时的默认值。
CMAKE_POLICY_WARNING_CMP 当CMake_Policy()未显式或CMake_minimum_required()未隐式设置CMake Policy CMP<NNNN>时,显式启用或禁用警告。
CMAKE_PREFIX_PATH 用分号分隔的目录列表,指定find_package()、find_program()、find_library()、查找_file()和查找路径()命令要搜索的安装前缀。每个命令都会根据自己的文档中的指定添加适当的子目录(如bin、lib或include)。 默认情况下,此字段为空。它将由项目设置。 还有一个环境变量CMAKE_PREFIX_PATH,用作搜索前缀的附加列表。
CMAKE_PROGRAM_PATH 用分号分隔的目录列表,指定find_program()命令的搜索路径。默认情况下,它为空,由项目设置。 还有一个环境变量CMAKE_PROGRAM_PATH,用作搜索目录的附加列表。
CMAKE_PROJECT_INCLUDE 要作为所有project()命令调用的最后一步包含的CMake语言文件或模块。这是为了在不修改源代码的情况下将自定义代码注入到项目构建中。
CMAKE_PROJECT_INCLUDE_BEFORE 要作为所有project()命令调用的第一步包含的CMake语言文件或模块。这是为了在不修改源代码的情况下将自定义代码注入到项目构建中。。
CMAKE_PROJECT__INCLUDE CMake语言文件或模块,作为指定<project-NAME>为项目名称的任何project()命令调用的最后一步。这是为了在不修改源代码的情况下将自定义代码注入到项目构建中。
CMAKE_PROJECT__INCLUDE_BEFORE 作为任何指定<project-NAME>为项目名称的project()命令调用的第一步,要包含的CMake语言文件或模块。这是为了在不修改源代码的情况下将自定义代码注入到项目构建中。
CMAKE_PROJECT_TOP_LEVEL_INCLUDES 要作为第一个project()调用的一部分包含的CMake语言文件的分号分隔列表。在读取工具链文件(如果指定了一个)并设置平台变量之后,但在启用任何语言之前,这些文件将立即包含在内。因此,可能不会设置特定于语言的变量,包括CMAKE__COMPILER。
CMAKE_REQUIRE_FIND_PACKAGE_ 用于调用find_package()的变量REQUIRED。 通过将变量CMAKE_REQUIRE_FIND_PACKAGE_设置为TRUE,可以将项目中的每个非REQUIRED find_package()调用转换为REQUIRED。这可以用来断言关于构建环境的假设,并确保如果这些假设不成立,构建将提前失败。
CMAKE_SKIP_INSTALL_ALL_DEPENDENCY 不要让安装目标依赖于所有目标。 默认情况下,安装目标取决于所有目标。这样做的效果是,当调用makeinstall或构建install时,首先构建所有目标,然后开始安装。如果CMAKE_SKIP_INSTALL_ALL_DEPENDENCY设置为TRUE,则不会创建此依赖项,因此安装过程将立即启动,与项目是否已完全构建无关。
CMAKE_STAGING_PREFIX 此变量可以设置为交叉编译时要安装到的路径。如果CMAKE_SYSROOT中的路径是只读的,或者应该保持原始状态,那么这可能很有用。 CMAKE_STAGING_PREFIX位置也被find_*命令用作搜索前缀。这可以通过设置CMAKE_FIND_NO_INSTALL_PREFIX变量来控制。 如果传递给链接器的任何RPATH/RUNPATH条目包含CMAKE_STAGING_PREFIX,则匹配的路径片段将替换为CMAKE_INSTALL_PREFIX。
CMAKE_SUBLIME_TEXT_2_ENV_SETTINGS 此变量包含一个env-var列表,作为语法为var=value的令牌列表
CMAKE_SUBLIME_TEXT_2_EXCLUDE_BUILD_TREE 如果此变量在顶级CMakeLists.txt文件的末尾计算为ON,则Sublime Text 2额外生成器会将构建树从.spreme项目中排除(如果它在源树中)。
CMAKE_SUPPRESS_REGENERATION 如果默认情况下CMAKE_SUPPRESS_REGERATION为OFF,则CMAKE会添加一个所有其他目标所依赖的特殊目标,该目标将检查生成系统,并在目标规范源更改时重新运行CMAKE以重新生成生成系统。 如果此变量在顶级CMakeLists.txt文件的末尾计算为ON,则CMake将不会向生成系统添加重新生成目标,也不会执行任何生成系统检查。
CMAKE_SYSROOT 在--sysroot标志中传递给编译器的路径。 CMAKE_SYSROOT内容在--SYSROOT标志中传递给编译器(如果支持的话)。如果安装时需要,该路径也会从RPATH/RUNPATH中剥离。CMAKE_SYSROOT还用于为find_*命令搜索的路径添加前缀。 只能在CMAKE_TOOLCHAIN_FILE变量指定的工具链文件中设置此变量。
CMAKE_SYSROOT_COMPILE 编译源文件时在--sysroot标志中传递给编译器的路径。这与CMAKE_SYSROOT相同,但仅用于编译源,而不用于链接。
CMAKE_SYSROOT_LINK 链接时在--sysroot标志中传递给编译器的路径。这与CMAKE_SYSROOT相同,但仅用于链接而非编译源。
CMAKE_SYSTEM_APPBUNDLE_PATH find_program()和find_package()命令使用的macOS应用程序包的搜索路径。默认情况下,它包含当前系统的标准目录。项目不打算修改它,请使用CMAKE_APPBUNDLE_PATH。
CMAKE_SYSTEM_FRAMEWORK_PATH find_library()、find_package()、find_path()和find_file()命令使用的macOS框架的搜索路径。默认情况下,它包含当前系统的标准目录。项目不打算修改它,请使用CMAKE_FRAMEWORK_PATH。
CMAKE_SYSTEM_IGNORE_PATH 以分号分隔的目录列表将被各种find_*()命令忽略。
CMAKE_SYSTEM_IGNORE_PREFIX_PATH 要由find_program()、find_library()、find_file()和find_path()命令忽略的搜索前缀的分号分隔列表。find_package()命令的Config模式也会忽略前缀(Module模式不受影响)。
CMAKE_SYSTEM_INCLUDE_PATH 用分号分隔的目录列表,指定find_file()和find_path()命令的搜索路径。默认情况下,它包含当前系统的标准目录。
CMAKE_SYSTEM_LIBRARY_PATH 用分号分隔的目录列表,指定find_library()命令的搜索路径。默认情况下,它包含当前系统的标准目录。
CMAKE_SYSTEM_PREFIX_PATH 用分号分隔的目录列表,指定find_package()、find_program()、find_library()、find_file()和find_path()命令要搜索的安装前缀。每个命令都会根据自己的文档中的指定添加适当的子目录(如bin、lib或include)。 默认情况下,它包含当前系统的系统目录、CMAKE_INSTALL_PREFIX和CMAKE_STAGING_PREFIX。通过在第一次project()调用之前设置CMAKE_FIND_NO_INSTALL_PREFIX变量,可以排除安装和暂存前缀。 CMAKE_SYSTEM_PREFIX_PATH中包含的系统目录是通常包括已安装软件的位置。一个示例是基于UNIX的平台的/usr/local。除了标准平台位置外,CMake还将根据环境变量向CMake_SYSTEM_PREFIX_PATH添加值。CMake使用的环境变量和搜索位置可能会随着时间的推移而变化,因为平台及其约定: CrayLinuxEnvironment: ENV{SYSROOT_DIR}/ ENV{SYSROOT_DIR}/usr ENV{SYSROOT_DIR}/usr/local Darwin: ENV{SDKROOT}/usr When CMAKE_OSX_SYSROOT is not explicitly specified. OpenBSD: ENV{LOCALBASE} Unix: ENV{CONDA_PREFIX} when using a conda compiler MSYSTEM environment with MinGW toolchain: New in version 3.28. ENV{MSYSTEM_PREFIX}/local ENV{MSYSTEM_PREFIX} Windows: ENV{ProgramW6432} ENV{ProgramFiles} ENV{ProgramFiles(x86)} ENV{SystemDrive}/Program Files ENV{SystemDrive}/Program Files (x86)
CMAKE_SYSTEM_PROGRAM_PATH 用分号分隔的目录列表,指定find_program()命令的搜索路径。默认情况下,它包含当前系统的标准目录。
CMAKE_TLS_CAINFO 指定file(DOWNLOAD)和file(UPLOAD)命令的TLS_CAINFO选项的默认值。默认情况下未设置。 ExternalProject和FetchContent模块也使用此变量进行内部文件调用file(DOWNLOAD)。
CMAKE_TLS_VERIFY 为file(DOWNLOAD)和file(UPLOAD)命令的TLS_VERIFY选项指定默认值。如果未设置,则默认设置为禁用。 ExternalProject和FetchContent模块也使用此变量进行内部文件调用file(DOWNLOAD)。 TLS验证可以帮助提供连接到所需服务器的信心。下载已知内容时,还应该使用文件哈希进行验证。
CMAKE_USER_MAKE_RULES_OVERRIDE 指定替代平台信息的CMake文件。
CMAKE_WARN_DEPRECATED 是否对不推荐使用的功能发出警告。
CMAKE_WARN_ON_ABSOLUTE_INSTALL_DESTINATION 每次遇到具有绝对install DESTINATION的文件时,请要求cmake_install.cmake脚本发出警告。 此变量由CMake生成的CMake_install.CMake脚本使用。如果在运行脚本时将此变量设置为ON,则可能会收到来自脚本的警告消息。
CMAKE_XCODE_GENERATE_SCHEME 如果启用,Xcode生成器将生成模式文件。这些对于从命令行调用分析、归档、构建以进行测试和测试操作非常有用。
CMAKE_XCODE_GENERATE_TOP_LEVEL_PROJECT_ONLY 如果启用,Xcode生成器将只为最顶层的project()命令生成一个Xcode项目文件,而不是为每个project()。
CMAKE_XCODE_LINK_BUILD_PHASE_MODE 此变量用于初始化目标上的XCODE_LINK_BUILD_PHASE_MODE属性。它会影响Xcode生成器用来链接不同类型库的方法。其默认值为NONE。
CMAKE_XCODE_SCHEME_ADDRESS_SANITIZER 是否在生成的Xcode方案的Diagnostics部分启用Address Sanitizer。 此变量初始化所有目标上的XCODE_SCHEME_ADDRESS_SANITIZER属性。
CMAKE_XCODE_SCHEME_ADDRESS_SANITIZER_USE_AFTER_RETURN 在生成的Xcode方案的Diagnostics部分中,是否启用返回后检测堆栈的使用。
CMAKE_XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING 在生成的Xcode方案的"选项"部分中使用文档版本浏览器时,是否启用"允许调试"。
CMAKE_XCODE_SCHEME_DISABLE_MAIN_THREAD_CHECKER 是否在生成的Xcode方案的诊断部分禁用主线程检测器。
CMAKE_XCODE_SCHEME_DYNAMIC_LIBRARY_LOADS 是否在生成的Xcode方案的"诊断"部分中启用"动态库加载"。
CMAKE_XCODE_SCHEME_DYNAMIC_LINKER_API_USAGE 是否在生成的Xcode方案的诊断部分中启用动态链接器API使用。
CMAKE_XCODE_SCHEME_ENABLE_GPU_API_VALIDATION 生成的Xcode方案的"选项"部分中的Metal:neneneba API验证的属性值。
CMAKE_XCODE_SCHEME_ENABLE_GPU_FRAME_CAPTURE_MODE 生成的Xcode方案的"选项"部分中GPU帧捕获的属性值。示例值为 Metal 和Disabled
CMAKE_XCODE_SCHEME_ENABLE_GPU_SHADER_VALIDATION 生成的Xcode方案的"选项"部分中 Metal: Shader Validation的属性值。
CMAKE_XCODE_SCHEME_ENVIRONMENT 指定应添加到生成的Xcode方案的Arguments部分的环境变量。 如果设置为环境变量和MYVAR=值形式的值的列表,则这些环境变量将添加到方案中。
CMAKE_XCODE_SCHEME_GUARD_MALLOC 是否在生成的Xcode方案的Diagnostics部分启用Guard Malloc。 此变量初始化所有目标上的XCODE_SCHEME_GUARD_MALLOC属性。
CMAKE_XCODE_SCHEME_LAUNCH_CONFIGURATION 设置生成配置以运行目标。 此变量初始化所有目标上的XCODE_SCHEME_LAUNCH_CONFIGURATION属性。
CMAKE_XCODE_SCHEME_LAUNCH_MODE 生成的Xcode方案的"信息"部分中Launch的属性值。 此变量初始化所有目标上的XCODE_SCHEME_LAUNCH_MODE属性。
CMAKE_XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP 是否在生成的Xcode方案的"诊断"部分中启用"主线程检测器"选项"在出现问题时暂停"。 此变量初始化所有目标上的XCODE_SCHEME_MAIN_THRAD_CHECKER_STOP属性。
CMAKE_XCODE_SCHEME_MALLOC_GUARD_EDGES 是否在生成的Xcode方案的Diagnostics部分启用Malloc Guard Edges。
CMAKE_XCODE_SCHEME_MALLOC_SCRIBBLE 是否在生成的Xcode方案的诊断部分启用Malloc Scribble。
CMAKE_XCODE_SCHEME_MALLOC_STACK 是否在生成的Xcode方案的Diagnostics部分启用Malloc Stack。
CMAKE_XCODE_SCHEME_THREAD_SANITIZER 是否在生成的Xcode方案的Diagnostics部分启用Thread Sanitizer。
CMAKE_XCODE_SCHEME_THREAD_SANITIZER_STOP 是否启用Thread Sanitizer-在生成的Xcode方案的Diagnostics部分中的问题上暂停。
CMAKE_XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER_STOP 是否在生成的Xcode方案的Diagnostics部分中启用Undefined Behavior Sanitizer选项Pause on issues。
CMAKE_XCODE_SCHEME_WORKING_DIRECTORY 在生成的Xcode方案中指定运行和配置文件操作的工作目录。
CMAKE_XCODE_SCHEME_ZOMBIE_OBJECTS 是否在生成的Xcode方案的Diagnostics部分启用Zombie Objects。
CMAKE_XCODE_XCCONFIG 如果设置,Xcode生成器将指定的文件注册为全局XCConfig文件。有关目标级别XCConfig文件,请参阅XCODE_XCConfig目标属性。
_ROOT 对find_package()的调用将在_ROOT CMake变量指定的前缀中进行搜索,其中<PackageName]是给find_packaging()调用的(保留大小写)名称,_ROOT是文字。例如,find_package(Foo)将搜索Foo_ROOT CMake变量中指定的前缀(如果已设置)。
相关推荐
zhy295633 天前
【LIBS】开源库编译之OSQP
ubuntu·cmake·osqp·libs
charlee443 天前
CMake构建学习笔记19-OpenSSL库的构建
ssl·cmake·c/c++·构建
Prejudices5 天前
CMake的INSTALL FILES和INSTALL DIRECTORY有什么区别
cmake
上官永石6 天前
《Modern CMake for C++》学习笔记
cmake
Yongqiang Cheng8 天前
Installing CMake (安装 CMake)
cmake·安装 cmake
石悼花11 天前
Visual Studio 2022+CMake配置PCL1.14.1
c++·cmake·visual studio·pcl·openni2
___波子 Pro Max.15 天前
cmake CMAKE_CURRENT_SOURCE_DIR和CMAKE_CURRENT_LIST_DIR的区别
cmake
dragoo117 天前
vscode cmake头文件无法跳转
c++·vscode·cmake·头文件
路西法Lux18 天前
Cmake+基础命令
cmake