CMP0091
Добавлена в версии 3.15.
Флаги библиотеки времени выполнения MSVC выбираются абстракцией.
Компиляторы, нацеленные на ABI MSVC, имеют флаги для выбора библиотеки времени выполнения MSVC. Выбор библиотеки времени выполнения обычно зависит от конфигурации сборки, поскольку для сборок Debug есть отдельная библиотека времени выполнения.
В CMake 3.14 и ниже, CMake автоматически добавляет флаги выбора библиотеки времени выполнения MSVC в значения по умолчанию для кэша CMAKE_<LANG>_FLAGS_<CONFIG>. Это позволяет пользователям изменять значения кэша для настройки флагов. Однако наличие таких флагов по умолчанию проблематично для проектов, которые хотят программно выбрать другую библиотеку времени выполнения. В частности, это требует изменения строк в переменных 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() или 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/v3.31/policy/CMP0091.html