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.28.6 не предупреждает, если эта политика не установлена, и просто использует поведение 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.28/policy/CMP0091.html