Spec-Zone.ru › CMake

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API