set_property¶
在给定作用域中设置一个命名的属性。
set_property(<GLOBAL |
DIRECTORY [<dir>] |
TARGET [<target1> ...] |
SOURCE [<src1> ...]
[DIRECTORY <dirs> ...]
[TARGET_DIRECTORY <targets> ...] |
INSTALL [<file1> ...] |
TEST [<test1> ...]
[DIRECTORY <dir>] |
CACHE [<entry1> ...] >
[APPEND] [APPEND_STRING]
PROPERTY <name> [<value1> ...])
在一个作用域的零个或多个对象上设置一个属性。
第一个参数决定了设置属性的作用域。它必须是以下之一
GLOBAL
作用域是唯一的,不接受名称。
DIRECTORY
作用域默认为当前目录,但其他目录(已由 CMake 处理)可以通过完整或相对路径命名。相对路径被视为相对于当前源目录。另请参阅
set_directory_properties()
命令。3.19 版本新增:
<dir>
可以引用二进制目录。TARGET
作用域可以命名零个或多个现有目标。另请参阅
set_target_properties()
命令。别名目标 不支持设置目标属性。
SOURCE
作用域可以命名零个或多个源文件。默认情况下,源文件属性仅对在同一目录 (
CMakeLists.txt
) 中添加的目标可见。3.18 版本新增: 可以使用以下一个或两个子选项在其他目录作用域中设置可见性
DIRECTORY <dirs>...
源文件属性将在每个
<dirs>
目录的作用域中设置。CMake 必须已经知道这些目录中的每一个,要么是通过调用add_subdirectory()
添加它们,要么它是顶级源目录。相对路径被视为相对于当前源目录。3.19 版本新增:
<dirs>
可以引用二进制目录。TARGET_DIRECTORY <targets>...
源文件属性将在创建任何指定
<targets>
的目录作用域中设置(因此<targets>
必须已经存在)。
另请参阅
set_source_files_properties()
命令。INSTALL
3.1 版本新增。
作用域可以命名零个或多个已安装的文件路径。这些路径提供给 CPack 以影响部署。
属性键和值都可以使用生成器表达式。特定属性可能适用于已安装的文件和/或目录。
路径组件必须用正斜杠分隔,必须是规范化的并且区分大小写。
要使用相对路径引用安装前缀本身,请使用
.
。当前,仅为 WIX 生成器定义了已安装的文件属性,其中给定的路径相对于安装前缀。
TEST
作用域仅限于调用命令的目录。它可以命名零个或多个现有测试。另请参阅命令
set_tests_properties()
。测试属性值可以使用
生成器表达式
来指定,用于通过add_test(NAME)
签名创建的测试。3.28 版本新增: 可以使用以下子选项在其他目录作用域中设置可见性
DIRECTORY <dir>
测试属性将在
<dir>
目录的作用域中设置。CMake 必须已经知道此目录,要么是通过调用add_subdirectory()
添加它,要么它是顶级源目录。相对路径被视为相对于当前源目录。<dir>
可以引用二进制目录。
CACHE
作用域必须命名零个或多个现有缓存条目。
必需的 PROPERTY
选项紧跟要设置的属性的名称。其余参数用于组成属性值,形式为分号分隔的列表。
如果给定 APPEND
选项,则列表将附加到任何现有属性值(但空值将被忽略且不附加)。如果给定 APPEND_STRING
选项,则字符串将作为字符串附加到任何现有属性值,即,它将生成更长的字符串而不是字符串列表。当将 APPEND
或 APPEND_STRING
与定义为支持 INHERITED
行为的属性一起使用时(请参阅 define_property()
),在查找要附加到的初始值时,不会发生继承。如果属性尚未在指定作用域中直接设置,则该命令的行为将如同未给出 APPEND
或 APPEND_STRING
。
注意
GENERATED
源文件属性可能是全局可见的。有关详细信息,请参阅其文档。
参见¶
cmake-properties(7)
手册,其中列出了每个作用域中的属性。