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
項目將會填充 <target>
的 COMPILE_FEATURES
屬性。PUBLIC
和 INTERFACE
項目將會填充 <target>
的 INTERFACE_COMPILE_FEATURES
屬性。 對於相同的 <target>
重複呼叫會附加項目。
版本 3.11 新增: 允許在 IMPORTED 目標上設定 INTERFACE
項目。
名為 <target>
的目標必須已由諸如 add_executable()
或 add_library()
之類的命令建立,並且不得為 ALIAS 目標。
如需更多關於定義建置系統屬性的資訊。
target_compile_features
的參數可以使用產生器表達式,其語法為 $<...>
。請參閱 cmake-generator-expressions(7)
手冊以取得可用的表達式。請參閱 cmake-compile-features(7)
手冊,以取得關於編譯功能和支援的編譯器清單的資訊。