cmake-policies(7)
- Введение
- Политики, введённые в 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.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
Политики, введённые в CMake 3.10
- CMP0071: Разрешить AUTOMOC и AUTOUIC обрабатывать файлы GENERATED.
- CMP0070: Определение поведения file(GENERATE) для относительных путей.
Политики, введённые в CMake 3.9
- CMP0069: INTERPROCEDURAL_OPTIMIZATION применяется при включении.
- CMP0068: Параметры RPATH в macOS не влияют на install_name.
Политики, введённые в CMake 3.8
Политики, введённые в CMake 3.7
Политики, введённые в 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: Запрет сигнатур 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: Условное связывание импортированных целей с отсутствующими директориями включения.
- 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.14/manual/cmake-policies.7.html