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()
)的属性时,在查找要追加的初始值时不会发生继承。如果属性尚未直接在指定的范围内设置,则该命令的行为将如同没有提供追加
或追加字符串
。
注意
生成
源文件属性可能具有全局可见性。有关详细信息,请参阅其文档。
另请参阅¶
有关每个范围中属性的列表,请参阅
cmake-properties(7)
手册。