Spec-Zone.ru › CMake 3.26

CMP0141

Новое в версии 3.25.

Флаги формата отладочной информации MSVC выбираются с помощью абстракции.

Компиляторы, ориентированные на ABI MSVC, имеют флаги для выбора формата отладочной информации. Выбор формата отладочной информации обычно зависит от конфигурации сборки.

В CMake 3.24 и ниже флаги формата отладочной информации добавляются в стандартные записи кэша CMAKE_<LANG>_FLAGS_<CONFIG> CMake автоматически. Это позволяет пользователям редактировать записи своего кэша для настройки флагов. Однако наличие таких стандартных флагов проблематично для проектов, которые хотят программно выбрать другую библиотеку времени выполнения. В частности, это требует редактирования строк переменных 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.26.0-rc3 не предупреждает, когда этот принцип не установлен, и просто использует поведение OLD.

Примечание

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

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

Spec-Zone.ru

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