CMAKE_CXX_KNOWN_FEATURES
Добавлено в версии 3.1.
Список возможностей C++, известных этой версии CMake.
Возможности, перечисленные в этом глобальном свойстве, могут быть доступны компилятору 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, определённое в N2928, N3206 и N3272. -
cxx_func_identifier -
Предопределённый идентификатор
__func__, определённый в N2340. -
cxx_generalized_initializers -
Списки инициализации, определённые в N2672.
-
cxx_inheriting_constructors -
Наследуемые конструкторы, определённые в N2540.
-
cxx_inline_namespaces -
Встроенные пространства имён, определённые в N2535.
-
cxx_lambdas -
Лямбда-функции, определённые в 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, определённое в N2928, N3206 и N3272. -
cxx_range_for -
Цикл for на основе диапазона, определённый в N2930.
-
cxx_raw_string_literals -
Необработанные строковые литералы, определённые в N2442.
-
cxx_reference_qualified_functions -
Функции с квалификаторами ссылок, определённые в N2439.
-
cxx_right_angle_brackets -
Разбор закрывающих угловых скобок, определённый в N1757.
-
cxx_rvalue_references -
Rvalue-ссылки, определённые в 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 -
Обобщённые лямбда-выражения, определённые в N3649.
-
cxx_lambda_init_captures -
Инициализируемые захваты лямбда-выражений, определённые в N3648.
-
cxx_relaxed_constexpr -
Ослабленные ограничения constexpr, определённые в N3652.
-
cxx_return_type_deduction -
Выведение возвращаемого типа обычных функций, определённое в N3386.
-
cxx_variable_templates -
Шаблоны переменных, определённые в N3651.
© 2000–2026 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/latest/prop_gbl/CMAKE_CXX_KNOWN_FEATURES.html