Spec-Zone.ru › CMake 3.23

cmake-policies(7)

  • Введение
  • Политики, введённые в 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.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 использует стандартные соглашения об именах библиотек для языка csharp.
  • CMP0121: Команда list обнаруживает неверные индексы.

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

  • CMP0120: Модуль WriteCompilerDetectionHeader удалён.
  • CMP0119: Свойство файла LANGUAGE явно компилируется как язык.
  • CMP0118: Свойство файла GENERATED теперь видно во всех каталогах.
  • CMP0117: Флаг RTTI MSVC /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: Цель-псевдоним не может перезаписывать другую цель.
  • 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: Запретить установку результата export() с помощью install().
  • 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: Запрещено использование подписей 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–2022 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.23/manual/cmake-policies.7.html

Spec-Zone.ru

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