CMAKE_CXX_KNOWN_FEATURES¶
版本 3.1 新增。
此 CMake 版本已知的 C++ 功能列表。
此全域屬性中列出的功能可能已知可供 C++ 編譯器使用。如果 C++ 編譯器可以使用該功能,它將列在 CMAKE_CXX_COMPILE_FEATURES
變數中。
此處列出的功能可以與 target_compile_features()
命令一起使用。有關編譯功能和支援的編譯器列表,請參閱 cmake-compile-features(7)
手冊。
此 CMake 版本已知的功能如下所示。
指示 C++ 標準支援的高階元功能¶
版本 3.8 新增。
以下元功能指示對相關語言標準的一般支援。它反映了編譯器聲稱的語言支援,但並不一定意味著完全符合該標準。
cxx_std_98
編譯器模式至少為 C++ 98。
cxx_std_11
編譯器模式至少為 C++ 11。
cxx_std_14
編譯器模式至少為 C++ 14。
cxx_std_17
編譯器模式至少為 C++ 17。
cxx_std_20
版本 3.12 新增。
編譯器模式至少為 C++ 20。
cxx_std_23
版本 3.20 新增。
編譯器模式至少為 C++ 23。
cxx_std_26
版本 3.30 新增。
編譯器模式至少為 C++ 26。
注意
如果編譯器的預設標準層級至少與請求的功能相同,則 CMake 可能會省略 -std=
標誌。如果編譯器的預設擴充模式與 <LANG>_EXTENSIONS
目標屬性不符,或者如果設定了 <LANG>_STANDARD
目標屬性,則仍然可以新增該標誌。
低階個別編譯功能¶
對於 C++ 11 和 C++ 14,編譯器有時在實作某些語言功能方面速度較慢。 CMake 提供了一些個別的編譯功能,以幫助專案確定特定功能是否可用。這些個別功能現在不太相關,專案通常應優先使用高階元功能。未針對 C++ 17 或更高版本提供個別編譯功能。
有關個別編譯功能的使用的進一步討論,請參閱 cmake-compile-features(7)
手冊。
來自 C++ 98 的個別功能¶
cxx_template_template_parameters
範本範本參數,如
ISO/IEC 14882:1998
中所定義。
來自 C++ 11 的個別功能¶
cxx_alias_templates
範本別名,如 N2258 中所定義。
cxx_alignas
對齊控制
alignas
,如 N2341 中所定義。cxx_alignof
對齊控制
alignof
,如 N2341 中所定義。cxx_attributes
通用屬性,如 N2761 中所定義。
cxx_auto_type
自動型別推導,如 N1984 中所定義。
cxx_constexpr
常數表達式,如 N2235 中所定義。
cxx_decltype_incomplete_return_types
不完整傳回型別的 Decltype,如 N3276 中所定義。
cxx_decltype
Decltype,如 N2343 中所定義。
cxx_default_function_template_args
函數範本的預設範本引數,如 DR226 中所定義
cxx_defaulted_functions
預設函數,如 N2346 中所定義。
cxx_defaulted_move_initializers
預設移動初始化器,如 N3053 中所定義。
cxx_delegating_constructors
委派建構子,如 N1986 中所定義。
cxx_deleted_functions
已刪除函數,如 N2346 中所定義。
cxx_enum_forward_declarations
列舉型別前向宣告,如 N2764 中所定義。
cxx_explicit_conversions
顯式轉換運算子,如 N2437 中所定義。
cxx_extended_friend_declarations
擴充友元宣告,如 N1791 中所定義。
cxx_extern_templates
外部範本,如 N1987 中所定義。
cxx_final
cxx_func_identifier
預定義的
__func__
識別符,如 N2340 中所定義。cxx_generalized_initializers
初始化列表,如 N2672 中所定義。
cxx_inheriting_constructors
繼承建構子,如 N2540 中所定義。
cxx_inline_namespaces
內聯命名空間,如 N2535 中所定義。
cxx_lambdas
Lambda 函數,如 N2927 中所定義。
cxx_local_type_template_args
本機和未命名型別作為範本引數,如 N2657 中所定義。
cxx_long_long_type
long long
型別,如 N1811 中所定義。cxx_noexcept
例外規範,如 N3050 中所定義。
cxx_nonstatic_member_init
非靜態資料成員初始化,如 N2756 中所定義。
cxx_nullptr
空指標,如 N2431 中所定義。
cxx_override
cxx_range_for
基於範圍的 for 迴圈,如 N2930 中所定義。
cxx_raw_string_literals
原始字串字面值,如 N2442 中所定義。
cxx_reference_qualified_functions
參考限定函數,如 N2439 中所定義。
cxx_right_angle_brackets
右角括號解析,如 N1757 中所定義。
cxx_rvalue_references
右值參考,如 N2118 中所定義。
cxx_sizeof_member
非靜態資料成員的大小,如 N2253 中所定義。
cxx_static_assert
靜態斷言,如 N1720 中所定義。
cxx_strong_enums
強型別列舉,如 N2347 中所定義。
cxx_thread_local
執行緒本機變數,如 N2659 中所定義。
cxx_trailing_return_types
自動函數傳回型別,如 N2541 中所定義。
cxx_unicode_literals
Unicode 字串字面值,如 N2442 中所定義。
cxx_uniform_initialization
統一初始化,如 N2640 中所定義。
cxx_unrestricted_unions
無限制的 union,如 N2544 中所定義。
cxx_user_literals
使用者定義字面值,如 N2765 中所定義。
cxx_variadic_macros
可變參數巨集,如 N1653 中所定義。
cxx_variadic_templates
可變參數範本,如 N2242 中所定義。
來自 C++ 14 的個別功能¶
cxx_aggregate_default_initializers
聚合預設初始化器,如 N3605 中所定義。
cxx_attribute_deprecated
[[deprecated]]
屬性,如 N3760 中所定義。cxx_binary_literals
二進位字面值,如 N3472 中所定義。
cxx_contextual_conversions
上下文轉換,如 N3323 中所定義。
cxx_decltype_auto
decltype(auto)
語義,如 N3638 中所定義。cxx_digit_separators
數字分隔符,如 N3781 中所定義。
cxx_generic_lambdas
泛型 lambda,如 N3649 中所定義。
cxx_lambda_init_captures
初始化的 lambda 捕獲,如 N3648 中所定義。
cxx_relaxed_constexpr
放寬的 constexpr,如 N3652 中所定義。
cxx_return_type_deduction
常規函數的傳回型別推導,如 N3386 中所定義。
cxx_variable_templates
變數範本,如 N3651 中所定義。