cmake:set_directory_properties、set_property 墨蓝 2022-10-11 13:59 180阅读 0赞 # set\_directory\_properties # 设置当前目录和子目录的属性。 set_directory_properties(PROPERTIES prop1 value1 [prop2 value2] ...) 在键值对中设置当前目录及其子目录的属性。 另请参见set\_property(DIRECTORY) 命令。 有关每个属性的行为,请参见 Properties on Directorie,了解CMake已知的属性列表及其各自文档。 # set\_property # 在给定范围内设置命名属性。 set_property(<GLOBAL | DIRECTORY [<dir>] | TARGET [<target1> ...] | SOURCE [<src1> ...] [DIRECTORY <dirs> ...] | [TARGET_DIRECTORY <targets> ...] INSTALL [<file1> ...] | TEST [<test1> ...] | CACHE [<entry1> ...] > [APPEND] [APPEND_STRING] PROPERTY <name> [<value1> ...]) 在一个作用域的0个或多个对象上设置一个属性。 第一个参数确定属性设置的范围。它必须是以下之一: * `GLOBAL`:作用域是惟一的,不接受名称。 * `DIRECTORY`: * Scope默认为当前目录,但其他目录(已经由CMake处理)可以以完整路径或相对路径命名。 * 相对路径被视为相对于当前源目录。请参见set\_directory\_properties()命令。 * 3.19新版功能:< dir >可以引用二进制目录。 * `TARGET`:作用域可以命名零个或多个现有目标。请参见set\_target\_properties()命令。 * `SOURCE`: * 作用域可以命名零个或多个源文件。默认情况下,源文件属性仅对添加在同一目录(CMakeLists.txt)中的目标可见。 * 版本3.18中的新增功能:可以使用以下一个子选项或两个子选项在其他目录范围中设置可见性: * `DIRECTORY <dirs>...`: * 源文件属性将在每个目录的作用域中设置。CMake必须已经知道这些目录,要么通过调用add\_subdirectory()添加它们,要么它是顶级源目录。相对路径被视为相对于当前源目录。 * 3.19新版功能:可以引用二进制目录。 * `TARGET_DIRECTORY <targets>...`: * 源文件属性将在创建任何指定的< targets >的每个目录作用域中设置(因此< targets >必须已经存在)。 * 请参见set\_source\_files\_properties()命令。 * `INSTALL`: * 3.1新版功能。 * 作用域可以命名零个或多个已安装的文件路径。这些可用于CPack以影响部署。 * 属性键和值都可以使用生成器表达式。特定的属性可以应用于已安装的文件/目录。 * 路径组件必须用斜杠分隔,必须规范化,区分大小写。 * 使用相对路径use …引用安装前缀本身。 * 当前安装的文件属性仅为WIX生成器定义,其中给定的路径相对于安装前缀。 * `TEST`: * 范围可以命名零个或多个现有测试。请参见set\_tests\_properties()命令。 * `CACHE`:作用域必须命名零个或多个缓存现有条目。 **PROPERTY**选项是必须的,后面紧跟着要设置的属性的名称。其余参数用于以分号分隔的列表形式组成属性值。 如果给出了APPEND选项,则将列表追加到任何现有的属性值(除了忽略空值而不追加之外)。如果给定APPEND\_STRING选项,该字符串将作为字符串附加到任何现有的属性值,也就是说,它将产生一个更长的字符串,而不是一个字符串列表。当使用APPEND或APPEND\_STRING时,其属性定义为支持继承行为(参见define\_property()),当找到要附加的初始值时,不会发生继承。如果该属性还没有在指定的作用域中直接设置,则该命令的行为就像没有给出APPEND或APPEND\_STRING一样。 请参阅cmake-properties(7)手册,了解每个作用域的属性列表。 注意:生成的源文件属性可能是全局可见的。详细信息请参见文档。
还没有评论,来说两句吧...