Spec-Zone.ru › CMake 3.16

cmake-policies(7)

  • Введение
  • Политики, введённые в CMake 3.16
  • Политики, введённые в CMake 3.15
  • Политики, введённые в CMake 3.14
  • Политики, введённые в CMake 3.13
  • Политики, введённые в CMake 3.12
  • Политики, введённые в 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.16

  • CMP0097: ExternalProject_Add с GIT_SUBMODULES "" не инициализирует подмодули.
  • CMP0096: project() сохраняет ведущие нули в компонентах версии.
  • CMP0095: Записи RPATH корректно экранируются в промежуточном скрипте установки CMake.

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

  • CMP0094: FindPython3, FindPython2 и FindPython используют LOCATION для стратегии поиска.
  • CMP0093: FindBoost сообщает Boost_VERSION в формате x.y.z.
  • CMP0092: Флаги предупреждений MSVC по умолчанию не находятся в CMAKE_{C,CXX}_FLAGS.
  • CMP0091: Флаги библиотеки времени выполнения MSVC выбираются с помощью абстракции.
  • CMP0090: export(PACKAGE) по умолчанию не заполняет реестр пакетов.
  • CMP0089: Идентификатор компилятора для IBM Clang-базируемых XL компиляторов теперь XLClang.

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

  • CMP0088: FindBISON запускает bison в CMAKE_CURRENT_BINARY_DIR при выполнении.
  • CMP0087: install(SCRIPT | CODE) поддерживает выражения генератора.
  • CMP0086: UseSWIG учитывает SWIG_MODULE_NAME через флаг -module.
  • CMP0085: Выражение генератора IN_LIST обрабатывает пустые элементы списка.
  • CMP0084: Модуль FindQt не существует для find_package().
  • CMP0083: Добавление опций PIE при линковке исполняемого файла.
  • CMP0082: Правила установки из add_subdirectory() чередуются с правилами в вызывающем объекте.

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

  • CMP0081: Относительные пути запрещены в свойстве LINK_DIRECTORIES целевого объекта.
  • CMP0080: BundleUtilities нельзя включать во время конфигурации.
  • CMP0079: target_link_libraries позволяет использовать цели в других директориях.
  • CMP0078: UseSWIG генерирует стандартные имена целевых объектов.
  • CMP0077: option() обрабатывает обычные переменные.
  • CMP0076: Команда target_sources() преобразует относительные пути в абсолютные.

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

  • CMP0075: Макросы проверки файлов заголовков учитывают CMAKE_REQUIRED_LIBRARIES.
  • CMP0074: find_package использует переменные PackageName_ROOT.
  • CMP0073: Не генерировать устаревшие кэшированные записи _LIB_DEPENDS.

Политики, введённые в 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: Поддержка нового оператора if() IN_LIST.

Политики, введённые в 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: Запрещено использование сигнатур add_custom_command SOURCE.
  • 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: Ошибка при относительном include с генераторным выражением.
  • 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: Условно связанных импортированных целевых объектов с отсутствующими каталогами include.
  • CMP0026: Запрещено использование свойства LOCATION целевого объекта.
  • CMP0025: Идентификатор компилятора Apple Clang теперь AppleClang.
  • CMP0024: Запрещено использование export результата include.

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

  • CMP0023: Простые и ключевые сигнатуры target_link_libraries не могут быть смешаны.
  • CMP0022: INTERFACE_LINK_LIBRARIES определяет интерфейс компоновки.
  • CMP0021: Критическая ошибка при использовании относительных путей в свойстве INCLUDE_DIRECTORIES целевого объекта.
  • CMP0020: Автоматическая компоновка Qt исполняемых файлов с целевым объектом qtmain в Windows.
  • CMP0019: Не повторно расширять переменные в информации об include и компоновке.
  • 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–2020 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.16/manual/cmake-policies.7.html

Spec-Zone.ru

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