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)
手冊,其中列出了每個作用域中的屬性。