Spec-Zone.ru › CMake 3.7

cmake-policies(7)

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

  • CMP0066: Учитывать флаги каждой конфигурации в try_compile() сигнатуре файла исходного кода.

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

  • CMP0065: Не добавлять флаги для экспорта символов из исполняемых файлов без свойства целевого объекта ENABLE_EXPORTS.
  • CMP0064: Поддержка нового оператора TEST if().

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

  • CMP0063: Учитывать свойства видимости для всех типов целей.
  • CMP0062: Запрещено установка() результата 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: Запрет сигнатур SOURCE в add_custom_command.
  • CMP0049: Не расширять переменные в записи исходного кода целевого объекта.
  • CMP0048: Команда project() управляет переменными VERSION.
  • CMP0047: Использование QCC компилятора id для драйверов 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–2019 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.7/manual/cmake-policies.7.html

Spec-Zone.ru

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