Spec-Zone.ru › CMake 3.15

cmake-policies(7)

  • Введение
  • Политики, введённые в 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.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-совместимых 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: Макросы проверки файлов include учитывают 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 в свойстве TARGET 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: Ошибка при использовании относительного include с генераторным выражением.
  • 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: Условное связывание импортированных целевых объектов с отсутствующими каталогами include.
  • 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–2020 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.15/manual/cmake-policies.7.html

Spec-Zone.ru

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