Spec-Zone.ru › CMake

cmake-policies(7)

  • Введение
  • Политики, введенные в CMake 3.31
  • Политики, введенные в CMake 3.30
  • Политики, введенные в 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.31

  • CMP0180: проект() всегда устанавливает <PROJECT-NAME>_* в качестве обычных переменных.
  • CMP0179: Удаление дубликатов статических библиотек в строках линковки сохраняет первую запись.
  • CMP0178: Строки команд для тестирования сохраняют пустые аргументы.
  • CMP0177: Пути DESTINATION в install() нормализуются.
  • CMP0176: ENCODING в execute_process() по умолчанию UTF-8.
  • CMP0175: add_custom_command() отказывается от неверных аргументов.
  • CMP0174: cmake_parse_arguments(PARSE_ARGV) определяет переменную для пустой строки после ключевого слова с одним значением.
  • CMP0173: Модуль CMakeFindFrameworks удален.
  • CMP0172: Модуль CPack по умолчанию включает установку на машину в генераторе CPack WIX.
  • CMP0171: «codegen» — зарезервированное имя целевого объекта.

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

  • CMP0170: Требования FETCHCONTENT_FULLY_DISCONNECTED выполняются.
  • CMP0169: FetchContent_Populate(depName) с одним аргументом устарело.
  • CMP0168: FetchContent выполняет шаги непосредственно, а не через подсборку.
  • CMP0167: Модуль FindBoost удален.
  • CMP0166: TARGET_PROPERTY оценивает свойства линковки транзитивно над частными зависимостями статических библиотек.
  • CMP0165: enable_language() не должен вызываться до project().
  • CMP0164: add_library() отклоняет SHARED библиотеки, если они не поддерживаются платформой.
  • CMP0163: Свойство GENERATED файла исходного кода теперь видно во всех директориях.
  • CMP0162: Генераторы Visual Studio добавляют индикаторы UseDebugLibraries по умолчанию.

Политики, введенные в 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: Директория include AUTOMOC по умолчанию является системной директории include.
  • 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 по умолчанию обрабатывается как ON.

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

Политики, представленные CMake 3.20

  • CMP0120: Модуль WriteCompilerDetectionHeader удалён.
  • CMP0119: Свойство файла LANGUAGE явно компилируется как язык.
  • CMP0118: Сгенерированные источники могут использоваться в разных директориях без ручного маркирования.
  • 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() с тем же 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: Поддержка нового оператора 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: Запрещено включать результат export().

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

  • CMP0023: Подписи target_link_libraries для обычных и ключевых ссылок не могут быть смешаны.
  • CMP0022: INTERFACE_LINK_LIBRARIES определяет интерфейс связи.
  • CMP0021: Критическая ошибка при использовании относительных путей в свойстве INCLUDE_DIRECTORIES целевого объекта.
  • CMP0020: Автоматическое подключение исполняемых файлов Qt к целевому объекту qtmain в Windows.
  • CMP0019: Не следует повторно расширять переменные в информации об include и link.
  • 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/latest/manual/cmake-policies.7.html

Spec-Zone.ru

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