target_compile_features

版本 3.1 新增。

為目標新增預期的編譯器功能。

target_compile_features(<target> <PRIVATE|PUBLIC|INTERFACE> <feature> [...])

指定編譯特定目標時需要的編譯器功能。如果該功能未在 CMAKE_C_COMPILE_FEATURESCMAKE_CUDA_COMPILE_FEATURESCMAKE_CXX_COMPILE_FEATURES 變數中列出,則 CMake 會回報錯誤。如果使用該功能需要額外的編譯器旗標,例如 -std=gnu++11,則會自動新增該旗標。

需要 INTERFACEPUBLICPRIVATE 關鍵字來指定功能的範圍。PRIVATEPUBLIC 項目將會填充 <target>COMPILE_FEATURES 屬性。PUBLICINTERFACE 項目將會填充 <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) 手冊,以取得關於編譯功能和支援的編譯器清單的資訊。

另請參閱