get_property

获取属性。

get_property(<variable>
             <GLOBAL             |
              DIRECTORY [<dir>]  |
              TARGET    <target> |
              SOURCE    <source>
                        [DIRECTORY <dir> | TARGET_DIRECTORY <target>] |
              INSTALL   <file>   |
              TEST      <test>
                        [DIRECTORY <dir>] |
              CACHE     <entry>  |
              VARIABLE           >
             PROPERTY <name>
             [SET | DEFINED | BRIEF_DOCS | FULL_DOCS])

从一个作用域中的某个对象获取一个属性。

第一个参数指定用于存储结果的变量。第二个参数决定获取属性的作用域。它必须是下面列出的选项之一

GLOBAL

作用域是唯一的,且不接收名称。

DIRECTORY

作用域默认为当前目录,但可以通过完整或相对路径 <dir> 命名另一个目录(已经由 CMake 处理)。相对路径被视为相对于当前源目录。另请参见 get_directory_property() 命令。

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

TARGET

作用域必须命名一个现有的目标。另请参见 get_target_property() 命令。

SOURCE

作用域必须命名一个源文件。默认情况下,源文件的属性将从当前源目录的作用域中读取。

在 3.18 版本中添加: 目录作用域可以通过以下子选项之一覆盖

DIRECTORY <dir>

源文件属性将从 <dir> 目录的作用域中读取。CMake 必须已经知道该目录,无论是通过调用 add_subdirectory() 将其添加的,还是因为 <dir> 是顶级目录。相对路径被视为相对于当前源目录。>

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

TARGET_DIRECTORY <target>

源文件属性将从创建了 <target> 的目录作用域中读取(因此 <target> 必须已经存在)。

另见 get_source_file_property() 命令。

INSTALL

在 3.1 版本中添加。

作用域必须命名一个已安装的文件路径。

TEST

范围必须命名一个现有的测试。另请参见get_test_property()命令。

3.28 版中新增: 可以使用以下子选项覆盖目录范围

DIRECTORY <dir>

测试属性将从<dir>目录的范围中进行读取。CMake 必须已知该目录,通过对 add_subdirectory() 的调用添加该目录或<dir>是顶级目录。相对路径将被视为相对于当前源目录。 <dir>可能会引用二进制目录。

CACHE

范围必须命名一个缓存项。

VARIABLE

作用域是唯一的,且不接收名称。

必需的PROPERTY选项紧跟需获取的属性的名称。如果未设置属性,则调用范围内的已命名的<variable>在返回时将被取消设置,尽管如果定义为以这种方式进行,一些属性支持从父范围进行继承(请参见define_property())。

如果给出了SET选项,则将变量设置为布尔值,表明是否已设置属性。如果给出了DEFINED选项,则将变量设置为布尔值,用以表明是否已定义属性,例如使用define_property()命令。

如果给出了BRIEF_DOCSFULL_DOCS,则将变量设置为包含所需属性的文档的字符串。如果为尚未定义的属性请求文档,则返回NOTFOUND

注意

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

另请参阅