CMP0091
Новое в версии 3.15.
Флаги библиотеки времени выполнения MSVC выбираются с помощью абстракции.
Компиляторы, ориентированные на MSVC ABI, имеют флаги для выбора библиотеки времени выполнения 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(), которая активирует язык, компилятор которого ориентирован на MSVC ABI.
Примечание
После того, как политика вступила в силу вверху проекта, этот выбор должен использоваться по всей ветке. В проектах, содержащих вложенные проекты в подкаталогах, убедитесь, что все изменения внесены вместе.
Поведение OLD для этой политики заключается в размещении флагов библиотеки времени выполнения MSVC в стандартных записях кэша CMAKE_<LANG>_FLAGS_<CONFIG> и игнорировании абстракции CMAKE_MSVC_RUNTIME_LIBRARY. Поведение NEW для этой политики заключается в не размещении флагов библиотеки времени выполнения MSVC в стандартных записях кэша и вместо этого использовании абстракции.
Эта политика была добавлена в CMake версии 3.15. Используйте команду cmake_policy() для явного её установки на значение OLD или NEW. В отличие от многих политик, CMake версии 3.24.2 не предупреждает, когда эта политика не установлена, а просто использует поведение 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.24/policy/CMP0091.html