CMP0141
Новое в версии 3.25.
Флаги формата отладочной информации MSVC выбираются с помощью абстракции.
Компиляторы, нацеленные на ABI MSVC, имеют флаги для выбора формата отладочной информации. Выбор формата отладочной информации обычно зависит от конфигурации сборки.
В CMake 3.24 и ниже, CMake автоматически добавляет флаги формата отладочной информации в стандартные записи кэша CMAKE_<LANG>_FLAGS_<CONFIG>. Это позволяет пользователям редактировать записи кэша для настройки флагов. Однако наличие таких стандартных флагов создаёт проблемы для проектов, которые хотят программно выбрать другую библиотеку времени выполнения. В частности, это требует редактирования строк переменных CMAKE_<LANG>_FLAGS_<CONFIG> с использованием знаний стандартных значений CMake, чтобы их можно было заменить.
CMake 3.25 и выше предпочитает не включать флаги формата отладочной информации в стандартные значения CMAKE_<LANG>_FLAGS_<CONFIG>, а вместо этого предлагает абстракцию первого класса. Переменная CMAKE_MSVC_DEBUG_INFORMATION_FORMAT и свойство целевого объекта MSVC_DEBUG_INFORMATION_FORMAT могут быть установлены для выбора формата отладочной информации MSVC. Если они не установлены, CMake включает отладочную информацию в конфигурациях отладки, используя значение по умолчанию $<$<CONFIG:Debug,RelWithDebInfo>:ProgramDatabase>, если оно поддерживается компилятором, а в противном случае $<$<CONFIG:Debug,RelWithDebInfo>:Embedded>.
Эта политика обеспечивает совместимость с проектами, которые не были обновлены, чтобы понимать абстракцию. Настройка политики вступает в силу с первого вызова команды project() или enable_language(), которая включает язык, компилятор которого нацелен на ABI MSVC.
Примечание
После того, как политика вступила в силу в начале проекта, этот выбор будет использоваться по всей древовидной структуре. В проектах, имеющих вложенные проекты в подкаталогах, убедитесь, что всё работает с выбранным поведением политики.
Поведение OLD для этой политики заключается в размещении флагов формата отладочной информации MSVC в стандартных записях кэша CMAKE_<LANG>_FLAGS_<CONFIG> и игнорировании абстракции CMAKE_MSVC_DEBUG_INFORMATION_FORMAT. Поведение NEW для этой политики заключается в не размещении флагов формата отладочной информации MSVC в стандартных записях кэша и использовании вместо этого абстракции.
Эта политика была добавлена в CMake версии 3.25. Используйте команду cmake_policy() для явного её установки на OLD или NEW. В отличие от многих политик, CMake версии 3.25.1 не выводит предупреждение, если эта политика не установлена, и просто использует поведение OLD.
Примечание
Поведение OLD политики deprecated by definition и может быть удалено в будущих версиях CMake.
© 2000–2022 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.25/policy/CMP0141.html