CMP0162
Новое в версии 3.30.
Генераторы Visual Studio по умолчанию добавляют UseDebugLibraries индикаторы.
Настройка "Использовать библиотеки отладки" в проектах Visual Studio указывает, какие конфигурации считаются конфигурациями отладки. В автономных проектах это может повлиять на выбор MSBuild по умолчанию для библиотеки времени выполнения MSVC, флагов оптимизации, проверок времени выполнения и аналогичных настроек. CMake обычно явно генерирует все эти настройки на основе спецификации проекта, поэтому CMake 3.29 и ниже не записывают никаких UseDebugLibraries индикаторов в .vcxproj файлы.
CMake 3.30 и выше предпочитает записывать UseDebugLibraries индикаторы, так как они полезны для справок как для людей, так и для инструментов, а также могут повлиять на поведение платформ-специфичных SDK. Индикатор для каждой конфигурации целевого объекта определяется следующим образом:
- Если целевой объект компилирует исходные файлы для известной библиотеки времени выполнения MSVC (например, той, что задана
MSVC_RUNTIME_LIBRARY), тоUseDebugLibrariesравноtrueдля конфигураций, которые компилируются для библиотеки времени выполнения "Debug", иfalseдля других. - В противном случае, например, в целевых объектах, созданных
add_custom_target(),UseDebugLibrariesравноtrueдля конфигурацииDebug, иfalseдля других.
Этот принцип обеспечивает совместимость для проектов, которые не были обновлены, чтобы ожидать индикаторов. Настройка политики записывается для каждого целевого объекта при его создании и используется для определения поведения по умолчанию для .vcxproj файла этого целевого объекта.
OLD поведение для этой политики — не генерировать UseDebugLibraries индикаторов по умолчанию. NEW поведение для этой политики — генерировать UseDebugLibraries индикаторы по умолчанию.
Если переменная CMAKE_VS_USE_DEBUG_LIBRARIES и/или свойство целевого объекта VS_USE_DEBUG_LIBRARIES установлено, это явно управляет UseDebugLibraries генерацией независимо от этой политики.
Эта политика была введена в версии CMake 3.30. Она может быть установлена с помощью cmake_policy() или cmake_minimum_required(). Если она не установлена, CMake не предупреждает и использует 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.30/policy/CMP0162.html