cmake-policies(7)
- Введение
- Политики, введённые в 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.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: Упрощение оценки ссылок на переменные и последовательностей escape.
- CMP0052: Отклонение каталогов source и build в установленных INTERFACE_INCLUDE_DIRECTORIES.
- CMP0051: Вывод TARGET_OBJECTS в свойстве SOURCES целевого объекта.
Политики, введённые в CMake 3.0
- CMP0050: Запрещено использование подписей add_custom_command SOURCE.
- 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: Ошибка при относительном включении с выражением генератора.
- 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.9/manual/cmake-policies.7.html