cmake-policies(7)
- Введение
- Политики, введённые в 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.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: Запретить 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: Запрещено использование подписей SOURCE для add_custom_command.
- CMP0049: Не следует расширять переменные в записях исходного кода.
- CMP0048: Команда project() управляет переменными VERSION.
- CMP0047: Для драйверов qcc на QNX использовать идентификатор компилятора QCC.
- 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 и линковке.
- 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.13/manual/cmake-policies.7.html