cmake-policies(7)
- Введение
- Политики, введённые в 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.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 для драйверов 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.10/manual/cmake-policies.7.html