cmake-policies(7)
- Введение
- Политики, введённые в 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.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: Запрещено использование подписей 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: Ошибка при относительном включении с выражением генератора.
- 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: Не следует повторно расширять переменные в информации о включении и линковке.
- 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.12/manual/cmake-policies.7.html