target_compile_features¶
版本 3.1 新增。
為目標添加預期的編譯器特性。
target_compile_features(<target> <PRIVATE|PUBLIC|INTERFACE> <feature> [...])
指定編譯給定目標時所需的編譯器特性。如果該特性未列在 CMAKE_C_COMPILE_FEATURES
、 CMAKE_CUDA_COMPILE_FEATURES
或 CMAKE_CXX_COMPILE_FEATURES
變數中,CMake 將會回報錯誤。如果特性的使用需要額外的編譯器標誌,例如 -std=gnu++11
,則會自動添加該標誌。
INTERFACE
、 PUBLIC
和 PRIVATE
關鍵字是指定特性範圍所必需的。PRIVATE
和 PUBLIC
項目將會填充 COMPILE_FEATURES
的 <target>
屬性。PUBLIC
和 INTERFACE
項目將會填充 INTERFACE_COMPILE_FEATURES
的 <target>
屬性。針對相同的 <target>
重複呼叫會附加項目。
版本 3.11 新增: 允許在 IMPORTED targets 上設定 INTERFACE
項目。
指定的 <target>
名稱必須已由 add_executable()
或 add_library()
等命令建立,且不得為 ALIAS target。
如需更多關於定義建置系統屬性的資訊。
target_compile_features
的參數可以使用產生器表達式,語法為 $<...>
。請參閱 cmake-generator-expressions(7)
手冊以取得可用的表達式。請參閱 cmake-compile-features(7)
手冊以取得關於編譯特性的資訊以及支援的編譯器列表。