Spec-Zone.ru › CMake 3.22

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(), чтобы установить её в OLD или NEW явно. В отличие от многих политик, CMake версии 3.22.6 не предупреждает, когда эта политика не установлена, а просто использует поведение 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.22/policy/CMP0091.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API