Spec-Zone.ru › CMake 3.29

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. Эта политика обеспечивает совместимость для проектов, которые ещё не были переведены. Проекты, использующие модуль, должны быть обновлены, чтобы прекратить его использование. Альтернативы включают:

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

Поведение 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.29/policy/CMP0120.html

Spec-Zone.ru

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