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> ...])

在范围的零个或多个对象上设置一个属性。

第一个参数确定设置属性的范围。它必须是以下之一

全局

范围是唯一的并且不接受名称。

目录

范围默认为当前目录,但其他目录(已经过 CMake 处理)可以通过完整或相对路径进行命名。相对路径被视为相对于当前源目录。另请参见 set_directory_properties() 命令。

在版本 3.19 中新增: <dir> 可以引用二进制目录。

目标

范围可以命名零个或多个现有目标。另请参见 set_target_properties() 命令。

别名目标 不支持设置目标属性。

范围可以命名零个或多个源文件。默认情况下,源文件属性仅对在同一目录中添加的目标可见(CMakeLists.txt)。

在版本 3.18 中新增: 可见性可以在其他目录范围内使用以下一个或两个子选项进行设置

DIRECTORY <dirs>...

源文件属性将设置在每个 <dirs> 目录的范围内。CMake 必须已经了解这些目录中的每一个,或者通过调用 add_subdirectory() 将它们添加,或者它是顶层源目录。相对路径被视为相对于当前源目录。

在版本 3.19 中新增: <dirs> 可以引用二进制目录。

TARGET_DIRECTORY <targets>...

源文件属性将在指定的任何 <targets> 被创建的目录区域内设置(因此 <targets> 必须已存在)。

另请参见 set_source_files_properties() 命令。

安装

在版本 3.1 中新增。

范围可以命名零个或多个已安装的文件路径。这些路径可供 CPack 使用以影响部署。

属性键和值都可以使用生成器表达式。特定属性可以应用于已安装的文件和/或目录。

路径组件必须用正斜杠分隔,必须规范化,且区分大小写。

要使用相对路径引用安装前缀本身,请使用 .

目前已安装的文件属性仅针对 WIX 生成器定义,其中给定路径相对于安装前缀。

测试

范围仅限于调用该命令的目录。它可以指定零个或更多现有的测试。另请参阅命令set_tests_properties()

使用生成器 表达式可以指定测试属性值,用于由add_test(名称)签名创建的测试。

在版本 3.28 中添加: 使用以下子选项,可以在其他目录范围内设置可见性

目录 <dir>

测试属性将在<dir>目录的范围内设置。CMake 必须已经了解此目录,可以通过调用 add_subdirectory()或将其作为顶级源目录实现此目的。相对路径被视为相对于当前源目录的路径。<dir>可能引用一个二进制目录。

缓存

范围必须指定零个或更多现有的缓存条目。

所需的属性选项紧跟要设置的属性的名称。剩余参数用于以分号分隔的列表的形式组成属性值。

如果提供了追加选项,则列表将追加到任何现有属性值(空值除外,将忽略且不追加)。如果提供了追加字符串选项,则该字符串将作为字符串追加到任何现有属性值,即它将生成更长的字符串,而不是字符串列表。使用追加追加字符串与定义为支持继承行为(参见define_property())的属性时,在查找要追加的初始值时不会发生继承。如果属性尚未直接在指定的范围内设置,则该命令的行为将如同没有提供追加追加字符串

注意

生成源文件属性可能具有全局可见性。有关详细信息,请参阅其文档。

另请参阅