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 原始碼檔案屬性可能是全域可見的。請參閱其文件以了解詳細資訊。

參見