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

覆寫控制 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

Null 指標,如 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

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