cmake-policies(7)
- Введение
- Политики, введённые в CMake 3.30
- Политики, введённые в CMake 3.29
- Политики, введённые в CMake 3.28
- Политики, введённые в CMake 3.27
- Политики, введённые в CMake 3.26
- Политики, введённые в 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.30
- CMP0170: Требования к FETCHCONTENT_FULLY_DISCONNECTED соблюдаются.
- CMP0169: Синтаксис FetchContent_Populate(depName) с одним аргументом устарел.
- CMP0168: FetchContent выполняет шаги напрямую, а не через подсборку.
- CMP0167: Модуль FindBoost удален.
- CMP0166: TARGET_PROPERTY оценивает свойства связи транзитивно через приватные зависимости статических библиотек.
- CMP0165: enable_language() не должен вызываться до project().
- CMP0164: add_library() отклоняет SHARED библиотеки, если они не поддерживаются платформой.
- CMP0163: Свойство GENERATED файла теперь видно во всех директориях.
- CMP0162: Генераторы Visual Studio добавляют индикаторы UseDebugLibraries по умолчанию.
Политики, введённые в CMake 3.29
- CMP0161: CPACK_PRODUCTBUILD_DOMAINS по умолчанию равен true.
- CMP0160: Больше свойств целевых объектов только для чтения теперь вызывают ошибку при попытке их установки.
- CMP0159: file(STRINGS) с REGEX обновляет CMAKE_MATCH_<n>.
- CMP0158: add_test() учитывает CMAKE_CROSSCOMPILING_EMULATOR только при кросс-компиляции.
- CMP0157: Режим компиляции Swift выбирается с помощью абстракции.
- CMP0156: Дедупликация библиотек в строках линковки на основе возможностей линковщика.
Политики, введённые в CMake 3.28
- CMP0155: C++ исходники в целях с, по крайней мере, C++20, сканируются на импорты, если это поддерживается.
- CMP0154: Сгенерированные файлы по умолчанию являются приватными в целях, использующих наборы файлов.
- CMP0153: Команда exec_program не должна вызываться.
- CMP0152: file(REAL_PATH) разрешает символические ссылки до сворачивания компонентов ../.
Политики, введённые в CMake 3.27
- CMP0151: Директория включения AUTOMOC по умолчанию является системной директорией включения.
- CMP0150: ExternalProject_Add и FetchContent_Declare рассматривают относительные пути к репозиториям git как относительные к удалённому репозиторию родительского проекта.
- CMP0149: Генераторы Visual Studio выбирают последнюю Windows SDK по умолчанию.
- CMP0148: Модули FindPythonInterp и FindPythonLibs удалены.
- CMP0147: Генераторы Visual Studio строят пользовательские команды параллельно.
- CMP0146: Модуль FindCUDA удален.
- CMP0145: Модули Dart и FindDart удалены.
- CMP0144: find_package использует переменные PACKAGENAME_ROOT в верхнем регистре.
Политики, введённые в CMake 3.26
Политики, введенные 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 и FetchContent по умолчанию игнорируют отметки времени в архивах для метода загрузки по 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: Флаги компиляции и компоновки ARMClang cpu/arch должны быть установлены явно.
- CMP0122: UseSWIG использует стандартные соглашения об именах библиотек для языка csharp.
- CMP0121: Команда list обнаруживает недопустимые индексы.
Политики, введенные CMake 3.20
- CMP0120: Модуль WriteCompilerDetectionHeader удален.
- CMP0119: Свойство файла исходного кода LANGUAGE явно компилируется как язык.
- CMP0118: Сгенерированные исходные файлы могут использоваться в различных директориях без ручного маркирования.
- 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: Целевая задача-псевдоним не может перезаписывать другую целевую задачу.
- 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: Идентификатор компилятора для компиляторов IBM Clang-based 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 обрабатывать сгенерированные файлы.
- 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: Запретить подписи add_custom_command SOURCE.
- 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: Ошибка при использовании относительного include с генераторным выражением.
- 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–2024 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.30/manual/cmake-policies.7.html