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