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.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/CMP0141.html