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/latest/policy/CMP0120.html