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