CMP0091
Флаги библиотеки времени выполнения 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.15.7 не предупреждает, когда эта политика не установлена, и просто использует поведение 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.15/policy/CMP0091.html