CMP0091
Новое в версии 3.15.
Флаги библиотеки времени выполнения MSVC выбираются с помощью абстракции.
Компиляторы, нацеленные на ABI MSVC, имеют флаги для выбора библиотеки времени выполнения MSVC. Выбор библиотеки времени выполнения обычно зависит от конфигурации сборки, поскольку для сборок Debug есть отдельная библиотека времени выполнения.
В CMake 3.14 и ниже флаги выбора библиотеки времени выполнения MSVC автоматически добавляются в стандартные записи кэша CMAKE_<LANG>_FLAGS_<CONFIG> CMake. Это позволяет пользователям редактировать записи кэша для настройки флагов. Однако наличие таких стандартных флагов создает проблемы для проектов, которые хотят программно выбрать другую библиотеку времени выполнения. В частности, это требует редактирования строк переменных CMAKE_<LANG>_FLAGS_<CONFIG> с учетом стандартных значений CMake, чтобы они могли быть заменены.
CMake 3.15 и выше предпочитают не включать флаги выбора библиотеки времени выполнения MSVC в стандартные значения CMAKE_<LANG>_FLAGS_<CONFIG> и вместо этого предлагают абстракцию первого класса. Переменную CMAKE_MSVC_RUNTIME_LIBRARY и свойство целевого объекта MSVC_RUNTIME_LIBRARY можно задать для выбора библиотеки времени выполнения MSVC. Если они не заданы, CMake использует значение по умолчанию MultiThreaded$<$<CONFIG:Debug>:Debug>DLL, которое эквивалентно исходным флагам.
Данная политика обеспечивает совместимость с проектами, которые не были обновлены для использования абстракции. Настройка политики вступает в силу с первого project() или enable_language() команд, которые включают язык, компилятор которого нацелен на ABI MSVC.
Примечание
После того, как политика вступит в силу вверху проекта, этот выбор должен использоваться по всему дереву. В проектах, которые имеют вложенные проекты в подкаталогах, убедитесь, что всё преобразовано вместе.
Поведение OLD для этой политики заключается в размещении флагов библиотеки времени выполнения MSVC в стандартных записях кэша CMAKE_<LANG>_FLAGS_<CONFIG> и игнорировании абстракции CMAKE_MSVC_RUNTIME_LIBRARY. Поведение NEW для этой политики заключается в не размещении флагов библиотеки времени выполнения MSVC в стандартных записях кэша и использовании вместо этого абстракции.
Данная политика была добавлена в CMake версии 3.15. Используйте команду cmake_policy(), чтобы явно установить её в OLD или NEW. В отличие от многих политик, CMake версии 3.25.1 не предупреждает, если эта политика не задана, и просто использует поведение OLD.
Примечание
Поведение OLD политики — deprecated by definition и может быть удалено в будущих версиях CMake.
© 2000–2022 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.25/policy/CMP0091.html