Spec-Zone.ru › CMake 3.21

cmake-policies(7)

  • Введение
  • Политики, введённые в CMake 3.21
  • Политики, введённые в CMake 3.20
  • Политики, введённые в 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.21

  • CMP0126: set(CACHE) не удаляет обычную переменную с тем же именем.
  • CMP0125: find_(path|file|library|program) имеют согласованное поведение для переменных кэша.
  • CMP0124: Переменные цикла foreach() доступны только в области действия цикла.
  • CMP0123: Флаги компиляции и компоновки ARMClang cpu/arch должны быть установлены явно.
  • CMP0122: SWIG использует стандартные соглашения об именах библиотек для языка csharp.
  • CMP0121: Команда list обнаруживает некорректные индексы.

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

  • CMP0120: Модуль WriteCompilerDetectionHeader удалён.
  • CMP0119: Свойство файла исходного кода LANGUAGE явно компилирует как язык.
  • CMP0118: Свойство файла исходного кода GENERATED теперь видно во всех каталогах.
  • CMP0117: Флаг MSVC RTTI /GR по умолчанию не добавляется в CMAKE_CXX_FLAGS.
  • CMP0116: Генераторы Ninja преобразуют DEPFILE из add_custom_command().
  • CMP0115: Расширения файлов исходного кода должны быть явными.

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

  • CMP0114: Целевые шаги ExternalProject полностью принимают свои этапы.
  • CMP0113: Генераторы Makefile не повторяют пользовательские команды из зависимостей целей.
  • CMP0112: Выражения генератора компонентов файлов целевых объектов не добавляют зависимости целевых объектов.
  • 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: Поддержка нового оператора if() IN_LIST.

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

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

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

  • CMP0054: Интерпретировать аргументы if() как переменные или ключевые слова только при отсутствии кавычек.
  • CMP0053: Упрощение вычисления ссылок на переменные и последовательностей экранирования.
  • CMP0052: Отклонять каталоги исходных кодов и сборки в установленном INTERFACE_INCLUDE_DIRECTORIES.
  • CMP0051: Выводить TARGET_OBJECTS в свойстве TARGET 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.
  • CMP0005: Значения определений препроцессора теперь автоматически экранируются.
  • CMP0004: Связанные библиотеки не должны содержать начальных или конечных пробелов.
  • CMP0003: Библиотеки, связанные с полным путём, больше не генерируют пути поиска компоновщика.
  • CMP0002: Логические имена целей должны быть уникальными во всём проекте.
  • CMP0001: CMAKE_BACKWARDS_COMPATIBILITY больше не должен использоваться.
  • CMP0000: Необходимо указать минимальную требуемую версию CMake.

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

Spec-Zone.ru

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