Spec-Zone.ru › CMake 3.18

CMP0091

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

Spec-Zone.ru

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