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

覆寫控制 final 關鍵字,如 N2928N3206N3272 中所定義。

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

覆寫控制 override 關鍵字,如 N2928N3206N3272 中所定義。

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 中所定義。