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

另請參閱