CMP0091
Добавлено в версии 3.15.
Флаги библиотеки времени выполнения MSVC выбираются с помощью абстракции.
Компиляторы, ориентированные на ABI MSVC, имеют флаги для выбора библиотеки времени выполнения MSVC. Выбор библиотеки времени выполнения обычно зависит от конфигурации сборки, поскольку для сборок Debug предусмотрена отдельная библиотека времени выполнения.
В CMake 3.14 и более ранних версиях флаги выбора библиотеки времени выполнения MSVC автоматически добавляются CMake в записи кэша по умолчанию CMAKE_<LANG>_FLAGS_<CONFIG>. Это позволяет пользователям редактировать записи кэша для настройки флагов. Однако наличие таких флагов по умолчанию проблематично для проектов, которым необходимо программно выбрать другую библиотеку времени выполнения. В частности, для их замены требуется редактировать строки в переменных CMAKE_<LANG>_FLAGS_<CONFIG>, зная встроенные значения CMake по умолчанию.
В CMake 3.15 и более поздних версиях предпочтительно не включать флаги выбора библиотеки времени выполнения MSVC в значения CMAKE_<LANG>_FLAGS_<CONFIG> по умолчанию, а вместо этого предоставлять полноценную абстракцию. Для выбора библиотеки времени выполнения MSVC можно задать переменную CMAKE_MSVC_RUNTIME_LIBRARY и свойство цели MSVC_RUNTIME_LIBRARY. Если они не заданы, 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() или cmake_minimum_required(). Если политика не установлена, CMake не выдаёт предупреждение и использует поведение OLD.
Примечание
Поведение OLD политики по определению считается устаревшим и может быть удалено в будущей версии CMake.
© 2000–2026 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/latest/policy/CMP0091.html