Spec-Zone.ru › CMake 3.11

cmake-policies(7)

  • Введение
  • Политики, введённые в CMake 3.11
  • Политики, введённые в CMake 3.10
  • Политики, введённые в CMake 3.9
  • Политики, введённые в CMake 3.8
  • Политики, введённые в CMake 3.7
  • Политики, введённые в CMake 3.4
  • Политики, введённые в CMake 3.3
  • Политики, введённые в CMake 3.2
  • Политики, введённые в CMake 3.1
  • Политики, введённые в CMake 3.0
  • Политики, введённые в CMake 2.8
  • Политики, введённые в CMake 2.6

Введение

Политики в CMake используются для сохранения обратной совместимости между различными версиями. При добавлении новой политики более новые версии CMake начнут предупреждать об обратной совместимости. Можно отключить предупреждение, явно запросив старое, или обратную совместимость, используя команду cmake_policy(). Также можно запросить NEW, или несовместимость с предыдущими версиями для политики, чтобы избежать предупреждения. Каждая политика также может быть установлена в NEW или OLD режим явно в командной строке с помощью переменной CMAKE_POLICY_DEFAULT_CMP<NNNN>.

Политика — это механизм устаревания, а не надёжный переключатель функций. Политику следует почти никогда не устанавливать в OLD, за исключением случаев подавления предупреждений в стабильной или замороженной базе кода, или временно в рамках более широкого пути миграции. OLD поведение каждой политики нежелательно и будет заменено на ошибку в будущей версии.

Команда cmake_minimum_required() делает больше, чем просто сообщает об ошибке, если используется слишком старая версия CMake для сборки проекта. Она также устанавливает все политики, введённые в этой или более ранней версии CMake, в NEW режим. Чтобы управлять политиками без увеличения минимально требуемой версии CMake, можно использовать команду if(POLICY):

if(POLICY CMP0990)
  cmake_policy(SET CMP0990 NEW)
endif()

Это приводит к использованию NEW поведения с более новыми версиями CMake, которые могут использовать пользователи, без выдачи предупреждения о совместимости.

В некоторых случаях установка политики не распространяется на родительский контекст. Например, если файлы, прочитанные с помощью команды include() или find_package(), содержат использование cmake_policy(), то установка политики по умолчанию не повлияет на вызывающую сторону. Обе команды принимают необязательное ключевое слово NO_POLICY_SCOPE для управления этим поведением.

Переменная CMAKE_MINIMUM_REQUIRED_VERSION также может использоваться для определения, следует ли сообщать об ошибке при использовании устаревших макросов или функций.

Политики, введённые в CMake 3.11

  • CMP0072: FindOpenGL по умолчанию предпочитает GLVND, если он доступен.

Политики, введённые в CMake 3.10

  • CMP0071: Позволить AUTOMOC и AUTOUIC обрабатывать файлы GENERATED.
  • CMP0070: Определение поведения file(GENERATE) для относительных путей.

Политики, введённые в CMake 3.9

  • CMP0069: INTERPROCEDURAL_OPTIMIZATION применяется при включении.
  • CMP0068: Параметры RPATH на macOS не влияют на install_name.

Политики, введённые в CMake 3.8

  • CMP0067: Учёт языкового стандарта в try_compile() подписи файла исходного кода.

Политики, введённые в CMake 3.7

  • CMP0066: Учёт флагов конфигурации в try_compile() подписи файла исходного кода.

Политики, введённые в CMake 3.4

  • CMP0065: Не добавлять флаги для экспорта символов из исполняемых файлов без свойства ENABLE_EXPORTS целевого объекта.
  • CMP0064: Поддержка нового оператора TEST if().

Политики, введённые в CMake 3.3

  • CMP0063: Учёт свойств видимости для всех типов целевых объектов.
  • CMP0062: Запретить install() результата export().
  • CMP0061: CTest по умолчанию не сообщает make об игнорировании ошибок (-i).
  • CMP0060: Связывать библиотеки полным путём даже в неявных каталогах.
  • CMP0059: Не рассматривать DEFINITIONS как встроенное свойство каталога.
  • CMP0058: Ninja требует явности для результатов пользовательских команд.
  • CMP0057: Поддержка нового оператора IN_LIST if().

Политики, введённые в CMake 3.2

  • CMP0056: Учёт флагов компоновки в try_compile() подписи файла исходного кода.
  • CMP0055: Строгий контроль команды break().

Политики, введённые в CMake 3.1

  • CMP0054: Интерпретировать аргументы if() как переменные или ключевые слова только в случае отсутствия кавычек.
  • CMP0053: Упрощение оценки ссылок на переменные и последовательностей экранирования.
  • CMP0052: Отклонение директорий исходного и билда в установленном INTERFACE_INCLUDE_DIRECTORIES.
  • CMP0051: Перечисление TARGET_OBJECTS в свойстве SOURCES целевого объекта.

Политики, введённые в CMake 3.0

  • CMP0050: Запрещено использовать подписи SOURCE для add_custom_command.
  • CMP0049: Не следует расширять переменные в записях целевых источников.
  • CMP0048: Команда project() управляет переменными VERSION.
  • CMP0047: Используйте идентификатор компилятора QCC для драйверов qcc в QNX.
  • CMP0046: Ошибка при отсутствии зависимости в add_dependencies.
  • CMP0045: Ошибка при отсутствии цели в get_target_property.
  • CMP0044: Генераторные выражения Lang_COMPILER_ID чувствительны к регистру.
  • CMP0043: Игнорировать свойства COMPILE_DEFINITIONS_Config.
  • CMP0042: MACOSX_RPATH включено по умолчанию.
  • CMP0041: Ошибка при относительном включении с генераторным выражением.
  • CMP0040: Цель в подписи TARGET команды add_custom_command() должна существовать.
  • CMP0039: Утилитарные цели не могут иметь зависимости от линковки.
  • CMP0038: Цели не могут быть связаны напрямую с собой.
  • CMP0037: Имена целей не должны быть зарезервированы и должны соответствовать шаблону валидности.
  • CMP0036: Команда build_name не должна вызываться.
  • CMP0035: Команда variable_requires не должна вызываться.
  • CMP0034: Команда utility_source не должна вызываться.
  • CMP0033: Команда export_library_dependencies не должна вызываться.
  • CMP0032: Команда output_required_files не должна вызываться.
  • CMP0031: Команда load_command не должна вызываться.
  • CMP0030: Команда use_mangled_mesa не должна вызываться.
  • CMP0029: Команда subdir_depends не должна вызываться.
  • CMP0028: Двойное двоеточие в имени цели означает ALIAS или IMPORTED цель.
  • CMP0027: Условные ссылки на импортированные цели с отсутствующими каталогами включения.
  • CMP0026: Запрещено использование свойства LOCATION цели.
  • CMP0025: Идентификатор компилятора Apple Clang теперь AppleClang.
  • CMP0024: Запрещено экспортировать результат включения.

Политики, введённые CMake 2.8

  • CMP0023: Простые и ключевые подписи target_link_libraries не могут быть смешаны.
  • CMP0022: INTERFACE_LINK_LIBRARIES определяет интерфейс связи.
  • CMP0021: Критическая ошибка при относительных путях в свойстве INCLUDE_DIRECTORIES цели.
  • CMP0020: Автоматическая связь исполняемых файлов Qt с целью qtmain в Windows.
  • CMP0019: Не следует повторно расширять переменные в информации об включении и линковке.
  • CMP0018: Игнорировать переменную CMAKE_SHARED_LIBRARY_Lang_FLAGS.
  • CMP0017: Предпочитать файлы из каталога модуля CMake при включении из него.
  • CMP0016: target_link_libraries() сообщает об ошибке, если единственный аргумент не является целью.
  • CMP0015: link_directories() обрабатывает пути относительно каталога исходников.
  • CMP0014: Каталоги ввода должны содержать CMakeLists.txt.
  • CMP0013: Не допускаются дублирующие каталоги бинарных файлов.
  • CMP0012: if() распознает числа и булевы константы.

Политики, введённые CMake 2.6

  • CMP0011: Включенные скрипты выполняют автоматический cmake_policy PUSH и POP.
  • CMP0010: Неверный синтаксис ссылки на переменную является ошибкой.
  • CMP0009: Команды FILE GLOB_RECURSE по умолчанию не должны следовать символам-ссылкам.
  • CMP0008: Библиотеки, связанные полным путём, должны иметь действительное имя файла библиотеки.
  • CMP0007: Команда list больше не игнорирует пустые элементы.
  • CMP0006: Установка целей MACOSX_BUNDLE требует назначения BUNDLE DESTINATION.
  • CMP0005: Значения определений препроцессора теперь автоматически экранируются.
  • CMP0004: Связанные библиотеки не должны иметь ведущих или хвостовых пробелов.
  • CMP0003: Библиотеки, связанные через полный путь, больше не генерируют пути поиска линковщика.
  • CMP0002: Логические имена целей должны быть глобально уникальными.
  • CMP0001: CMAKE_BACKWARDS_COMPATIBILITY больше не должен использоваться.
  • CMP0000: Необходимо указать минимально необходимую версию CMake.

© 2000–2019 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.11/manual/cmake-policies.7.html

Spec-Zone.ru

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