Spec-Zone.ru › CMake 3.29

cmake-policies(7)

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

  • CMP0161: CPACK_PRODUCTBUILD_DOMAINS по умолчанию равен true.
  • CMP0160: Больше свойств целевых объектов только для чтения теперь вызывают ошибку при попытке их установки.
  • CMP0159: file(STRINGS) с REGEX обновляет CMAKE_MATCH_<n>.
  • CMP0158: add_test() учитывает CMAKE_CROSSCOMPILING_EMULATOR только при кросс-компиляции.
  • CMP0157: Режим компиляции Swift выбирается абстракцией.
  • CMP0156: Удаление дублирующихся библиотек в строках компоновки на основе возможностей компоновщика.

Политики, введённые в 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 по умолчанию выбирают последнюю версию SDK Windows.
  • 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: UseSWIG использует стандартные соглашения об именах библиотек для языка 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: Расширения файлов исходных кодов должны быть явными.

Policies Introduced by 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 запрещены.

Policies Introduced by CMake 3.17

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

Policies Introduced by CMake 3.16

  • CMP0097: ExternalProject_Add с GIT_SUBMODULES "" не инициализирует подмодули.
  • CMP0096: project() сохраняет ведущие нули в компонентах версии.
  • CMP0095: Записи RPATH правильно экранированы в промежуточном скрипте установки CMake.

Policies Introduced by 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.

Policies Introduced by 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() чередуются с правилами в вызывающей программе.

Policies Introduced by CMake 3.13

  • CMP0081: Относительные пути запрещены в свойстве LINK_DIRECTORIES целевого объекта.
  • CMP0080: BundleUtilities не может быть включен во время конфигурации.
  • CMP0079: target_link_libraries разрешает использование целевых объектов в других директориях.
  • CMP0078: UseSWIG генерирует стандартные имена целевых объектов.
  • CMP0077: option() учитывает обычные переменные.
  • CMP0076: Команда target_sources() преобразует относительные пути в абсолютные.

Policies Introduced by CMake 3.12

  • CMP0075: Макросы проверки файлов заголовков учитывают CMAKE_REQUIRED_LIBRARIES.
  • CMP0074: find_package использует переменные PackageName_ROOT.
  • CMP0073: Не генерировать устаревшие записи кэша _LIB_DEPENDS.

Policies Introduced by CMake 3.11

  • CMP0072: FindOpenGL по умолчанию предпочитает GLVND, если оно доступно.

Policies Introduced by CMake 3.10

  • CMP0071: Разрешить AUTOMOC и AUTOUIC обрабатывать файлы GENERATED.
  • CMP0070: Определить поведение file(GENERATE) для относительных путей.

Policies Introduced by CMake 3.9

  • CMP0069: INTERPROCEDURAL_OPTIMIZATION принудительно включается, если он включен.
  • CMP0068: Параметры RPATH на macOS не влияют на install_name.
END_OF_DOCUMENT_MARKER

Политики, введённые в 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: Упрощение оценки ссылок на переменные и последовательностей escape.
  • CMP0052: Отклонять каталоги исходных и компиляции в установленных INTERFACE_INCLUDE_DIRECTORIES.
  • CMP0051: Перечислять TARGET_OBJECTS в свойстве TARGET property 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: Запрещено включать результат export().

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

Spec-Zone.ru

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