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)中添加的目标可见。Added in version 3.18: 可以使用以下一个或两个子选项在其他目录范围中设置可见性:
DIRECTORY <dirs>...源文件属性将在
<dirs>目录的每个范围内设置。CMake 必须已经知道这些目录中的每一个,可能是通过调用add_subdirectory()添加的,或者它是顶层源目录。相对路径相对于当前源目录进行处理。Added in version 3.19:
<dirs>可以引用二进制目录。TARGET_DIRECTORY <targets>...源文件属性将在指定
<targets>的每个创建目标所在的目录范围中设置(因此<targets>必须已存在)。
另请参阅
set_source_files_properties()命令。INSTALL版本 3.1 中新增。
范围可以命名零个或多个已安装文件路径。这些可供 CPack 使用,以影响部署。
属性键和值都可以使用生成器表达式。特定的属性可能适用于已安装的文件和/或目录。
路径组件必须用正斜杠分隔,必须是规范化的,并且区分大小写。
要使用相对路径引用安装前缀本身,请使用
.。目前,已安装的文件属性仅针对 WIX 生成器定义,其中给定路径相对于安装前缀。
TEST范围仅限于命令被调用的目录。它可以命名零个或多个现有测试。另请参阅命令
set_tests_properties()。对于使用
add_test(NAME)签名创建的测试,可以使用生成器表达式指定测试属性值。Added in version 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)手册,了解每个范围内的属性列表。