Spec-Zone.ru › CMake 3.28

cmake-policies(7)

  • Введение
  • Политики, введённые в CMake 3.28
  • Политики, введённые в 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 начинают предупреждать об обратной совместимости. Предупреждение можно отключить, явно запросив поведение OLD (обратной совместимости) с помощью команды 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.28

  • CMP0155: Источники C++ в целях, поддерживающих C++20 и более поздние версии, сканируются на импорты, если поддерживается.
  • CMP0154: Сгенерированные файлы по умолчанию являются приватными в целях, использующих наборы файлов.
  • CMP0153: Команда exec_program не должна вызываться.
  • CMP0152: file(REAL_PATH) разрешает символьные ссылки перед объединением компонентов ../.

Политики, введённые в 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: Флаги компиляции и компоновки для ARM clang 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: Модуль Documentation удалён.
  • CMP0105: Шаг компоновки устройства использует параметры компоновки.
  • CMP0104: CMAKE_CUDA_ARCHITECTURES теперь определяется для NVCC, пустой CUDA_ARCHITECTURES запрещён.
  • CMP0103: Несколько export() с тем же файлом без 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: Относительные пути запрещены в свойстве target 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: Запретить подписи 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: Запретить результат экспорта include.

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

Spec-Zone.ru

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