cmake-policies(7)
- Введение
- Политики, представленные в CMake 3.25
- Политики, представленные в CMake 3.24
- Политики, представленные в CMake 3.23
- Политики, представленные в CMake 3.22
- Политики, представленные в CMake 3.21
- Политики, представленные в CMake 3.20
- Политики, представленные в CMake 3.19
- Политики, представленные в CMake 3.18
- Политики, представленные в CMake 3.17
- Политики, представленные в CMake 3.16
- Политики, представленные в CMake 3.15
- Политики, представленные в 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 начнут предупреждать об обратной совместимости. Предупреждение можно отключить, явно запросив поведение OLD (обратной совместимости) с помощью команды 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.25
- CMP0142: Генератор Xcode не добавляет суффиксы каждой конфигурации к путям поиска библиотек.
- CMP0141: Флаги формата отладочной информации MSVC выбираются с помощью абстракции.
- CMP0140: Команда return() проверяет свои аргументы.
Политики, представленные в CMake 3.24
- CMP0139: Команда if() поддерживает сравнение путей с помощью оператора PATH_EQUAL.
- CMP0138: CheckIPOSupported использует флаги из вызываемого проекта.
- CMP0137: try_compile() передаёт переменные платформы в режиме проекта.
- CMP0136: Флаги библиотеки времени выполнения Watcom выбираются с помощью абстракции.
- CMP0135: ExternalProject игнорирует отметки времени в архивах по умолчанию для метода загрузки по URL.
- CMP0134: Возврат к просмотру реестра Windows «HOST», когда просмотр «TARGET» недоступен.
- CMP0133: Модуль CPack отключает SLA по умолчанию в генераторе CPack DragNDrop.
- CMP0132: Не устанавливать переменные окружения компилятора при первом запуске.
- CMP0131: LINK_LIBRARIES поддерживает выражение генератора LINK_ONLY.
- CMP0130: while() диагностирует ошибки оценки условия.
Политики, представленные в CMake 3.23
Политики, представленные в CMake 3.22
- CMP0128: Улучшено выбор стандарта языка и флагов расширений.
- CMP0127: cmake_dependent_option() поддерживает полный синтаксис условия.
Политики, представленные в CMake 3.21
- CMP0126: set(CACHE) не удаляет обычную переменную с тем же именем.
- CMP0125: find_(path|file|library|program) имеют согласованное поведение для переменных кэша.
- CMP0124: Переменные цикла foreach() доступны только в рамках области цикла.
- CMP0123: Флаги компиляции и компоновки ARMClnag cpu/arch должны быть установлены явно.
- CMP0122: UseSWIG использует стандартные соглашения об именах библиотек для языка csharp.
- CMP0121: Команда list обнаруживает неверные индексы.
Политики, представленные в CMake 3.20
- CMP0120: Модуль WriteCompilerDetectionHeader удалён.
- CMP0119: Свойство файла LANGUAGE явно компилируется как язык.
- CMP0118: Свойство файла GENERATED теперь видно во всех директориях.
- CMP0117: Флаг MSVC RTTI /GR не добавляется в CMAKE_CXX_FLAGS по умолчанию.
- CMP0116: Генераторы Ninja преобразуют DEPFILE из add_custom_command().
- CMP0115: Расширения файлов должны быть явными.
Политики, представленные в CMake 3.19
- CMP0114: Целевые шаги внешнего проекта полностью принимают свои шаги.
- CMP0113: Генераторы Makefile не повторяют пользовательские команды из зависимостей целевых объектов.
- CMP0112: Выражения генератора компонентов целевого файла не добавляют зависимости целевых объектов.
- CMP0111: Импортированный целевой объект, у которого отсутствует свойство location, завершает работу при генерации.
- CMP0110: add_test() поддерживает произвольные символы в именах тестов.
- CMP0109: find_program() требует разрешения на выполнение, но не на чтение.
Политики, введённые CMake 3.18
- CMP0108: Целевой объект не может ссылаться на себя через псевдоним.
- CMP0107: Целевой объект ALIAS не может перезаписывать другой целевой объект.
- CMP0106: Модуль документации удалён.
- CMP0105: Шаг связывания устройств использует параметры связывания.
- CMP0104: CMAKE_CUDA_ARCHITECTURES теперь обнаруживается для NVCC, пустой CUDA_ARCHITECTURES запрещён.
- CMP0103: Несколько export() с одинаковым FILE без APPEND запрещено.
Политики, введённые CMake 3.17
- CMP0102: mark_as_advanced() ничего не делает, если запись кэша не существует.
- CMP0101: target_compile_options учитывает ключевое слово BEFORE во всех областях.
- CMP0100: Позволяет AUTOMOC и AUTOUIC обрабатывать файлы заголовков .hh.
- CMP0099: Свойства связывания передаются по цепочке по частной зависимости от статических библиотек.
- CMP0098: FindFLEX выполняет flex в CMAKE_CURRENT_BINARY_DIR при выполнении.
Политики, введённые CMake 3.16
- CMP0097: ExternalProject_Add с GIT_SUBMODULES "" не инициализирует подмодули.
- CMP0096: project() сохраняет ведущие нули в компонентах версии.
- CMP0095: Записи RPATH корректно экранируются в промежуточном скрипте установки CMake.
Политики, введённые CMake 3.15
- CMP0094: FindPython3, FindPython2 и FindPython используют LOCATION для стратегии поиска.
- CMP0093: FindBoost сообщает Boost_VERSION в формате x.y.z.
- CMP0092: Флаги предупреждений MSVC по умолчанию не находятся в CMAKE_{C,CXX}_FLAGS.
- CMP0091: Флаги библиотеки времени выполнения MSVC выбираются абстракцией.
- CMP0090: export(PACKAGE) по умолчанию не заполняет реестр пакетов.
- CMP0089: Идентификатор компилятора для XL-компиляторов на основе IBM Clang теперь XLClang.
Политики, введённые 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: Относительные пути не разрешены в свойстве target 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 обрабатывать сгенерированные файлы.
- 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: Поддержка нового оператора if() IN_LIST.
Политики, введённые 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–2022 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.25/manual/cmake-policies.7.html