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
選項,則該字串會以字串的形式附加到任何現有的屬性值,也就是說,它會產生一個更長的字串,而不是字串的清單。當使用 APPEND
或 APPEND_STRING
與定義為支援 INHERITED
行為的屬性時 (請參閱 define_property()
),在尋找要附加的初始值時不會發生繼承。如果該屬性尚未在指定的範圍中直接設定,則該命令的行為將如同未給定 APPEND
或 APPEND_STRING
。
注意
GENERATED
原始碼檔案屬性可以是全域可見的。有關詳細資訊,請參閱其文件。
另請參閱¶
在每個範圍的屬性清單,請參閱
cmake-properties(7)
文件。