CMP0091
Флаги библиотеки времени выполнения MSVC выбираются абстракцией.
Компиляторы, нацеленные на MSVC ABI, имеют флаги для выбора библиотеки времени выполнения 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() команды, которая включает язык, компилятор которого ориентирован на MSVC ABI.
Примечание
После того, как политика вступила в силу в начале проекта, этот выбор должен использоваться по всему дереву. В проектах, имеющих вложенные проекты в подкаталогах, убедитесь, что всё преобразовано вместе.
Поведение OLD для этой политики заключается в размещении флагов библиотеки времени выполнения MSVC в стандартных CMAKE_<LANG>_FLAGS_<CONFIG> кеш-записях и игнорировании абстракции CMAKE_MSVC_RUNTIME_LIBRARY. Поведение NEW для этой политики заключается в том, чтобы не размещать флаги библиотеки времени выполнения MSVC в стандартных кеш-записях и использовать вместо этого абстракцию.
Этот политик был представлен в версии CMake 3.15. Используйте команду cmake_policy() для явного её установки в OLD или NEW. В отличие от многих политик, CMake версии 3.16.9 не выводит предупреждение, когда этот политик не установлен, и просто использует поведение 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.16/policy/CMP0091.html