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 項目將會填充 COMPILE_FEATURES<target> 屬性。PUBLICINTERFACE 項目將會填充 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) 手冊以取得關於編譯特性的資訊以及支援的編譯器列表。

參見