Spec-Zone.ru › CMake 3.8

cmake-policies(7)

  • Введение
  • Политики, введённые в 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.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 в свойстве 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: Ошибка при относительном 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: Не повторно расширять переменные в информации об 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.
  • CMP0005: Значения определений препроцессора теперь автоматически экранируются.
  • CMP0004: Связанные библиотеки не должны содержать пробелов в начале или конце.
  • CMP0003: Библиотеки, связанные с полным путём, больше не генерируют пути поиска компоновщика.
  • CMP0002: Логические имена целевых объектов должны быть уникальными в глобальном масштабе.
  • CMP0001: CMAKE_BACKWARDS_COMPATIBILITY больше не должен использоваться.
  • CMP0000: Необходимо указать минимальную требуемую версию CMake.

© 2000–2019 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.8/manual/cmake-policies.7.html

Spec-Zone.ru

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