Spec-Zone.ru › CMake 3.29

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() или cmake_minimum_required(). Если она не установлена, CMake не выводит предупреждение и использует поведение OLD.

Примечание

Поведение OLD политики — deprecated by definition, и оно может быть удалено в будущих версиях CMake.

© 2000–2024 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.29/policy/CMP0091.html

Spec-Zone.ru

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