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.28.6 предупреждает, когда политика не установлена, и использует OLD поведение. Используйте команду cmake_policy(), чтобы явно установить её в OLD или NEW.
Примечание
Поведение OLD политики deprecated by definition и может быть удалено в будущих версиях CMake.
© 2000–2024 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.28/policy/CMP0120.html