Spec-Zone.ru › CMake 3.21

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 версии 3.21.0-rc3 предупреждает, когда политика не установлена, и использует OLD поведение. Используйте команду cmake_policy(), чтобы явно установить ее в OLD или NEW.

Примечание

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

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

Spec-Zone.ru

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