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 选项,则该字符串将作为字符串附加到任何现有属性值,即它会生成一个更长的字符串而不是字符串列表。当将 APPENDAPPEND_STRING 与定义为支持 INHERITED 行为的属性(参见 define_property())一起使用时,在查找要附加的初始值时不会发生继承。如果该属性尚未直接在指定范围内设置,则该命令的行为将如同未给定 APPENDAPPEND_STRING 一样。

注意

GENERATED 源文件属性可能是全局可见的。详情请参阅其文档。

另请参阅