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
Extern 範本,如 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
Null 指標,如 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
R 值參考,如 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
無限制的聯集,如 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 中所定義。