Spec-Zone.ru › CMake 3.27

cmake-policies(7)

  • Введение
  • Политики, введенные в CMake 3.27
  • Политики, введенные в CMake 3.26
  • Политики, введенные в CMake 3.25
  • Политики, введенные в CMake 3.24
  • Политики, введенные в CMake 3.23
  • Политики, введенные в CMake 3.22
  • Политики, введенные в 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.27

  • CMP0151: Директория включения AUTOMOC по умолчанию является системной.
  • CMP0150: ExternalProject_Add и FetchContent_Declare рассматривают относительные пути к репозиториям Git как относительные к удалённому репозиторию родительского проекта.
  • CMP0149: Генераторы Visual Studio выбирают последнюю версию Windows SDK по умолчанию.
  • CMP0148: Модули FindPythonInterp и FindPythonLibs удалены.
  • CMP0147: Генераторы Visual Studio выполняют пользовательские команды параллельно.
  • CMP0146: Модуль FindCUDA удалён.
  • CMP0145: Модули Dart и FindDart удалены.
  • CMP0144: find_package использует переменные PACKAGENAME_ROOT с заглавными буквами.

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

  • CMP0143: Глобальное свойство USE_FOLDERS обрабатывается как ВКЛЮЧЁННОЕ по умолчанию.

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

  • CMP0142: Генератор Xcode не добавляет суффиксы по конфигурациям к путям поиска библиотек.
  • CMP0141: Флаги формата отладки MSVC выбираются с помощью абстракции.
  • CMP0140: Команда return() проверяет свои аргументы.

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

  • CMP0139: Команда if() поддерживает сравнение путей с оператором PATH_EQUAL.
  • CMP0138: CheckIPOSupported использует флаги из вызываемого проекта.
  • CMP0137: try_compile() передает переменные платформы в режиме проекта.
  • CMP0136: Флаги библиотеки времени выполнения Watcom выбираются с помощью абстракции.
  • CMP0135: ExternalProject игнорирует временные метки в архивах по умолчанию для метода скачивания URL.
  • CMP0134: Возврат к представлению реестра Windows "HOST", если представление "TARGET" недоступно.
  • CMP0133: Модуль CPack отключает SLA по умолчанию в генераторе CPack DragNDrop.
  • CMP0132: Не устанавливать переменные окружения компилятора при первом запуске.
  • CMP0131: LINK_LIBRARIES поддерживает выражение генератора LINK_ONLY.
  • CMP0130: while() диагностирует ошибки оценки условия.

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

  • CMP0129: Идентификатор компилятора для компиляторов MCST LCC теперь LCC, а не GNU.

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

  • CMP0128: Улучшена выборка языка и флагов расширения.
  • CMP0127: cmake_dependent_option() поддерживает полную синтаксическую конструкцию условия.

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

  • CMP0126: set(CACHE) не удаляет обычную переменную с тем же именем.
  • CMP0125: find_(path|file|library|program) имеют согласованное поведение для переменных кэша.
  • CMP0124: Переменные цикла foreach() доступны только в области цикла.
  • CMP0123: Флаги компиляции и компоновки ARMClang cpu/arch должны быть установлены явно.
  • CMP0122: Используйте SWIG со стандартными соглашениями об именах библиотек для языка C#.
  • 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: Идентификатор компилятора для XL-компиляторов IBM на основе Clang теперь 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: Запретить установку() результата 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: Ошибка при относительном включении с выражением генератора.
  • 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–2024 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.27/manual/cmake-policies.7.html

Spec-Zone.ru

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