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.25.
Режим компилятора - по крайней мере, 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, как определено в 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 -
Ссылки на значения правой части, как определено в N2118.
-
cxx_sizeof_member -
Размер нестатических членов данных, как определено в N2253.
-
cxx_static_assert -
Static assert, как определено в N1720.
-
cxx_strong_enums -
Сильно типизированные перечисления, как определено в N2347.
-
cxx_thread_local -
Переменные 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 -
Атрибут
, определенный в N3760.[[deprecated]] -
cxx_binary_literals -
Двоичные литералы, определенные в N3472.
-
cxx_contextual_conversions -
Контекстные преобразования, определенные в N3323.
-
cxx_decltype_auto -
Семантика
, определенная в N3638.decltype(auto) -
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–2023 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.26/prop_gbl/CMAKE_CXX_KNOWN_FEATURES.html