cmake:Properties on Directories

1059 篇文章 286 订阅

ADDITIONAL_CLEAN_FILES

看不懂

BINARY_DIR

版本3.7中的新功能。

此只读目录属性报告二进制目录的绝对路径,该目录对应于读取它的源。

BUILDSYSTEM_TARGETS

3.7新版功能。

这个只读目录属性包含一个以分号分隔的构建系统目标列表,这些目标是通过调用add_library()、add_executable()和add_custom_target()命令添加到目录中的。该列表不包括任何导入目标或别名目标,但包括接口库。列表中的每个条目都是目标的逻辑名称,适合传递给get_property()命令target选项。

请参见IMPORTED_TARGETS目录属性。

CACHE_VARIABLES

当前目录中可用的缓存变量列表。

这个只读属性指定当前定义的CMake缓存变量列表。它用于调试目的。

CLEAN_NO_CUSTOM

设置为true将告诉Makefile Generators在make clean操作期间不删除此目录的自定义命令的输出。这在其他生成器上被忽略,因为它不可能实现。

CMAKE_CONFIGURE_DEPENDS

告诉CMake关于配置过程的其他输入文件。如果任何命名文件被修改,构建系统将重新运行CMake来重新配置文件并再次生成构建系统。

以分号分隔的路径列表指定文件。相对路径被解释为相对于当前源目录。

COMPILE_DEFINITIONS

用于编译目录源文件的预处理器定义。

此属性指定到目前为止给add_compile_definitions()(或add_definitions())命令的选项列表。

COMPILE_DEFINITIONS属性可以用VAR或VAR=value语法设置为一个分号分隔的预处理器定义列表。不支持函数样式定义。CMake会自动正确转义本地构建系统的值(注意,CMake语言语法可能需要转义来指定一些值)。

在每个目录中,这个属性将由目录父目录中的值初始化。

CMake会自动删除一些本地构建工具不支持的定义。

免责声明:大多数本机构建工具对转义某些值的支持很差。CMake在很多情况下都有变通方法,但是有些值可能无法正确传递。如果某个值似乎没有被正确转义,不要试图通过向该值添加转义序列来解决这个问题。在改进了escape支持的CMake的未来版本中,您的解决方案可能会失效。相反,请考虑在(已配置的)头文件中定义宏。然后报告限制。

慎用。

COMPILE_OPTIONS

要传递给编译器的选项列表。

此属性保存到目前为止给add_compile_options()命令的一个以分号分隔的选项列表。

创建目标时,此属性用于初始化COMPILE_OPTIONS目标属性,生成器使用该属性为编译器设置选项。

COMPILE_OPTIONS的内容可以使用"generator expressions",语法为$<…>。关于可用的表达式,请参阅cmake-generator-expressions(7)手册。参见cmake-buildsystem(7)手册来定义更多的buildsystem属性。

DEFINITIONS

仅用于CMake 2.4兼容性。使用COMPILE_DEFINITIONS代替。

这个只读属性指定到目前为止给add_definitions()命令的标志列表。它用于调试目的。请使用COMPILE_DEFINITIONS目录属性。

如果策略CMP0059被设置为NEW,则这个内置的只读属性不存在。

EXCLUDE_FROM_ALL

在子目录上将此目录属性设置为true值,以从其祖先的“all”目标中排除其目标。如果排除,在父目录中运行例如make,默认情况下不会生成目标子目录。这并不影响子目录本身的“all”目标。例如,在子目录中运行make仍然会构建它的目标。

如果在目标上设置了EXCLUDE_FROM_ALL目标属性,那么它的值将决定该目标是否包含在此目录及其祖先的“all”目标中。

IMPLICIT_DEPENDS_INCLUDE_TRANSFORM

为目录中的依赖项指定#include行转换。

该属性指定在C和c++源文件隐式依赖项扫描期间转换类宏#include行的规则。规则列表必须用分号分隔,每个条目的形式为A_MACRO(%)=value- %(%必须是文字)。在依赖项扫描时,#include行上出现的A_MACRO(…)将被宏参数替换为%所给出的值所取代。例如,条目

MYDIR(%)=<mydir/%>

将转换行

#include MYDIR(myheader.h)

为:

#include <mydir/myheader.h>

允许遵循依赖关系。

此属性适用于目录中所有目标中的源。属性值在每个目录中由其在目录父目录中的值初始化。

IMPORTED_TARGETS

3.21新版功能。

这个只读目录属性包含一个以分号分隔的Imported Targets列表,这些目标是通过调用add_library()和add_executable()命令添加到目录中的。列表中的每个条目都是目标的逻辑名称,适合在同一目录中调用时传递给get_property()命令target选项。

请参见BUILDSYSTEM_TARGETS目录属性。

INCLUDE_DIRECTORIES

预处理列表包括文件搜索目录。

这个属性指定到目前为止include_directories()命令给出的目录列表。

此属性用于填充INCLUDE_DIRECTORIES目标属性,生成器使用该属性为编译器设置包含目录。

除了接受来自该命令的值之外,还可以使用set_property()命令在任何目录上直接设置值,并且可以使用set_directory_properties()命令在当前目录上设置值。如果父目录有初始值,则从父目录获取初始值。INCLUDE_DIRECTORIES目标属性的初始值来自此属性的值。目录和目标属性值都是通过调用include_directories()命令来调整的。但是,调用set_property()或set_directory_properties()将更新目录属性值,而不更新目标属性值。因此,必须在调用add_executable()或add_library()之前对它们要影响的目标进行直接的属性更新。

生成器使用目标属性值来设置编译器的包含路径。

INCLUDE_DIRECTORIES的内容可以使用“生成器表达式”,语法为$<…>。关于可用的表达式,请参阅cmake-generator-expressions(7)手册。参见cmake-buildsystem(7)手册来定义更多的buildsystem属性。

INCLUDE_REGULAR_EXPRESSION

包括文件扫描正则表达式。

此属性指定依赖项扫描期间使用的正则表达式,以匹配应该跟随的包含文件。请参阅include_regular_expression()命令以获得高级接口来设置此属性。

INTERPROCEDURAL_OPTIMIZATION

为目录中的目标启用过程间优化。

如果设置为true,则在已知编译器支持时启用过程间优化。

INTERPROCEDURAL_OPTIMIZATION_< CONFIG >

目录的每个配置过程间优化。

这是INTERPROCEDURAL_OPTIMIZATION的每个配置版本。如果设置,此属性将覆盖已命名配置的通用属性。

LABELS

3.10新版功能。

指定一个与目录及其所有子目录相关联的文本标签列表。这相当于在当前目录和子目录中的所有目标和测试上设置LABELS目标属性和LABELS测试属性。注意:发射器必须能够向目标传播标签。

CMAKE_DIRECTORY_LABELS变量可以用来初始化这个属性。

该列表在仪表板提交中报告。

LINK_DIRECTORIES

链接器搜索目录的列表。

此属性包含一个分号分隔的目录列表,通常使用link_directories()命令填充。它从父目录获取初始值(如果有的话)。

directory属性用于在创建目标时初始化LINK_DIRECTORIES目标属性。生成器使用该目标属性设置链接器的库搜索目录。

LINK_DIRECTORIES的内容可以使用“生成器表达式”,语法为$<…>。关于可用的表达式,请参阅cmake-generator-expressions(7)手册。参见cmake-buildsystem(7)手册来定义更多的buildsystem属性。

LINK_OPTIONS

3.13新版功能。

用于共享库、模块和可执行目标的链接步骤以及设备链接步骤的选项列表。

此属性保存到目前为止给add_link_options()命令的以分号分隔的选项列表。

创建目标时,此属性用于初始化LINK_OPTIONS目标属性,生成器使用该属性为编译器设置选项。

LINK_OPTIONS的内容可以使用“生成器表达式”,语法为$<…>。关于可用的表达式,请参阅cmake-generator-expressions(7)手册。参见cmake-buildsystem(7)手册来定义更多的buildsystem属性。

LISTFILE_STACK

正在处理的列表文件的当前堆栈。

这个属性在尝试调试CMake脚本中的错误时非常有用。它按顺序返回当前正在处理的列表文件的列表。因此,如果一个列表文件执行了一个include()命令,那么它就有效地将被包含的列表文件推到堆栈上。

MACROS

当前目录中可用的宏命令列表。

这个只读属性指定当前定义的CMake宏列表。它用于调试目的。请参见macro()命令。

PARENT_DIRECTORY

添加当前子目录的源目录。

此只读属性指定将当前源目录添加为构建子目录的源目录。在顶级目录中,值是空字符串。

RULE_LAUNCH_COMPILE

为编译规则指定启动程序。

有关详细信息,请参见同名的全局属性。这将覆盖目录的全局属性。

RULE_LAUNCH_CUSTOM

为自定义规则指定启动程序。

有关详细信息,请参见同名的全局属性。这将覆盖目录的全局属性。

RULE_LAUNCH_LINK

指定链接规则的启动程序。

有关详细信息,请参见同名的全局属性。这将覆盖目录的全局属性。

SOURCE_DIR

版本3.7中的新功能。

此只读目录属性报告读取它的源目录的绝对路径。

SUBDIRECTORIES

3.7新版功能。

这个只读目录属性包含一个由add_subdirectory()或subdirs()命令迄今为止处理过的子目录的分号分隔列表。每个条目都是到源目录(包含CMakeLists.txt文件)的绝对路径。这适合传递给get_property()命令DIRECTORY选项。

注意,subdirs()命令在完全处理调用目录之后才处理它的参数。因此,在当前目录中查找此属性将看不到它们。

TESTS

3.12新版功能。

测试列表。

此只读属性保存由add_test()命令在当前目录中迄今为止定义的测试的分号分隔列表。

TEST_INCLUDE_FILES

3.10新版功能。

ctest运行时将包含的cmake文件列表。

如果您指定TEST_INCLUDE_FILES,那么当ctest在该目录上运行时,将包含并处理这些文件。

VARIABLES

在当前目录中定义的变量列表。

这个只读属性指定当前定义的CMake变量列表。它用于调试目的。

VS_STARTUP_PROJECT

3.6新版功能。

指定Visual Studio解决方案中的默认启动项目。

Visual Studio Generators为每个目录创建一个.sln文件,其中CMakeLists.txt文件调用project()命令。将此属性设置为与project()命令调用相同的目录(例如,在顶级的CMakeLists.txt文件中),以指定相应解决方案文件的默认启动项目。

该属性必须设置为现有目标的名称。这将导致在生成的解决方案文件中首先列出该项目,如果该解决方案以前从未打开过,则Visual Studio将其作为启动项目。

如果未指定此属性,则ALL_BUILD项目将为默认值。

VS_GLOBAL_SECTION_POST_< section >

在Visual Studio中指定一个postSolution全局节。

像这样设置一个属性会在解决方案文件中生成以下表单项:

GlobalSection(<section>) = postSolution
  <contents based on property value>
EndGlobalSection

该属性必须设置为以分号分隔的键=值对列表。每个这样的对都将被转换为解决方案全局部分中的一个条目。键和值周围的空白被忽略。不包含等号的列表元素将被跳过。

此属性仅适用于Visual Studio 9及以上版本;它在其他生成器上被忽略。该属性仅适用于CMakeLists.txt包含project()命令的目录。

注意,CMake默认生成extenbilityglobals和extenbilityaddins的postSolution部分。如果您设置了相应的属性,它将覆盖默认部分。例如,设置VS_GLOBAL_SECTION_POST_ExtensibilityGlobals将覆盖ExtensibilityGlobals节的默认内容,同时保持ExtensibilityAddIns的默认值。然而,如果没有明确指定,CMake总是会在extenbilityglobals部分添加一个SolutionGuid。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值