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.26.0-rc3 не выводит предупреждение, когда эта политика не установлена, и просто использует поведение OLD.
Примечание
Поведение OLD политики deprecated by definition и может быть удалено в будущих версиях CMake.
© 2000–2023 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.26/policy/CMP0091.html