Spec-Zone.ru › CMake 3.19

cmake-policies(7)

  • Введение
  • Политики, введенные в CMake 3.19
  • Политики, введенные в CMake 3.18
  • Политики, введенные в CMake 3.17
  • Политики, введенные в 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.19

  • CMP0114: Цели этапов ExternalProject полностью принимают свои этапы.
  • CMP0113: Генераторы Makefile не повторяют пользовательские команды из зависимостей целей.
  • CMP0112: Выражения компонентов файлов целей генератора Makefile не добавляют зависимости целей.
  • CMP0111: Импортированная цель, у которой отсутствует свойство местоположения, завершается сбоем во время генерации.
  • CMP0110: add_test() поддерживает произвольные символы в именах тестов.
  • CMP0109: find_program() требует разрешения на выполнение, но не на чтение.

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

  • CMP0108: Цель не может ссылаться на себя через псевдоним.
  • CMP0107: Цель ALIAS не может перезаписывать другую цель.
  • CMP0106: Модуль документации удален.
  • CMP0105: Шаг связки устройства использует параметры связи.
  • CMP0104: CMAKE_CUDA_ARCHITECTURES теперь обнаружено для NVCC, пустой CUDA_ARCHITECTURES запрещен.
  • CMP0103: Не разрешены несколько export() с тем же FILE без APPEND.

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

  • CMP0102: mark_as_advanced() ничего не делает, если запись кэша не существует.
  • CMP0101: target_compile_options учитывает ключевое слово BEFORE во всех областях.
  • CMP0100: Разрешить AUTOMOC и AUTOUIC обрабатывать файлы заголовков .hh.
  • CMP0099: Свойства связки являются транзитивными через частную зависимость от статических библиотек.
  • CMP0098: FindFLEX запускает flex в CMAKE_CURRENT_BINARY_DIR при выполнении.

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

Политики, введённые в 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.
  • 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.19/manual/cmake-policies.7.html

Spec-Zone.ru

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