cmake-policies(7)
- Введение
- Политики, введённые в 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 начнут предупреждать об обратной совместимости. Предупреждение можно отключить, явно запросив старое, или обратную совместимость, используя команду 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.22
- CMP0128: Улучшение выбора стандартного языка и флагов расширений.
- CMP0127: cmake_dependent_option() поддерживает полную синтаксическую конструкцию условия.
Политики, введённые в CMake 3.21
- CMP0126: set(CACHE) не удаляет обычную переменную с тем же именем.
- CMP0125: find_(path|file|library|program) имеют согласованное поведение для переменных кэша.
- CMP0124: Переменные цикла foreach() доступны только в пределах области цикла.
- CMP0123: Флаги компиляции и компоновки ARM clang cpu/arch должны быть установлены явно.
- CMP0122: SWIG использует стандартные соглашения об именах библиотек для языка C#.
- 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: Целевые шаги ExternalProject полностью принимают их.
- CMP0113: Генерируемые Makefile не повторяют пользовательские команды из зависимостей целевых объектов.
- CMP0112: Выражения компонента файла целевого объекта генератора не добавляют зависимости целевых объектов.
- CMP0111: Импортированный целевой объект, у которого отсутствует свойство расположения, завершается сбоем во время генерации.
- CMP0110: add_test() поддерживает произвольные символы в именах тестов.
- CMP0109: find_program() требует разрешения на выполнение, но не на чтение.
Политики, введённые в CMake 3.18
- CMP0108: Целевой объект не может ссылаться на себя через псевдоним.
- CMP0107: Целевой объект ALIAS не может перезаписывать другой целевой объект.
- CMP0106: Модуль Documentation удалён.
- 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: Идентификатор компилятора для IBM Clang-основанных XL компиляторов теперь 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: Относительные пути запрещены в свойстве целевого объекта 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: Запретить установку результата export() с помощью install().
- 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–2021 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.22/manual/cmake-policies.7.html