cmake-policies(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.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: Запрещено включение экспорта результата.
Политики, введённые в 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.6/manual/cmake-policies.7.html