Spec-Zone.ru › CMake 3.31

CMP0120

Добавлен в версии 3.20.

Модуль WriteCompilerDetectionHeader удален.

Версии CMake с 3.1 по 3.19 предоставляют этот модуль для генерации слоя совместимости C++ путём повторного использования информации из таблицы CMake по проверкам препроцессора для cmake-compile-features(7). Однако:

  • Эти детализированные функции заменены мета-функциями для Требования к стандартам языка, таких как cxx_std_11. Поэтому новые проверки детализированных функций не будут добавлены, и проектам потребуется использовать другие методы для условного использования новых функций C++.
  • Модуль напрямую раскрывает некоторые реализации CMake для C++ трансляционных единиц.
  • Подход модуля фактически обеспечивает заголовочный файл с CMake, связывая версию заголовочного файла с версией CMake. Многие проекты обнаружили, что модуль WriteCompilerDetectionHeader лучше использовать, вручную сгенерировав его заголовочный файл локально с помощью последней версии CMake, а затем включив его в исходный код проекта, чтобы он мог работать с более старыми версиями CMake.

По причинам, включая вышесказанное, CMake 3.20 и выше предпочитает не предоставлять модуль WriteCompilerDetectionHeader. Эта политика обеспечивает совместимость для проектов, которые ещё не перешли на другую систему. Проекты, использующие данный модуль, должны быть обновлены, чтобы перестать его использовать. Альтернативы включают:

  • Включить копию сгенерированного заголовочного файла в исходный код проекта.
  • Использовать стороннюю альтернативу, такую как Hedley с лицензией CC0.
  • Отказаться от поддержки компиляторов, которые не поддерживают необходимые функции изначально.

Поведение политики OLD заключается в включении устаревшего модуля WriteCompilerDetectionHeader. Поведение NEW - это отказ от включения модуля, как если бы он не существовал.

Эта политика была введена в CMake версии 3.20. Её можно установить с помощью команды cmake_policy() или cmake_minimum_required(). Если она не установлена, CMake выводит предупреждение и использует поведение OLD.

Примечание

Поведение OLD политики deprecated by definition и может быть удалено в будущих версиях CMake.

© 2000–2024 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.31/policy/CMP0120.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API