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