Spec-Zone.ru › CMake

CMP0162

Добавлена в версии 3.30.

Генераторы Visual Studio добавляют по умолчанию индикаторы UseDebugLibraries.

Настройка "Использовать библиотеки отладки" в проектах Visual Studio указывает, какие конфигурации считаются конфигурациями отладки. В автономных проектах это может повлиять на стандартный выбор MSBuild библиотеки MSVC runtime, флагов оптимизации, проверок времени выполнения и аналогичных настроек. CMake обычно явно генерирует все эти настройки на основе спецификации проекта, поэтому CMake 3.29 и ниже не записывают никаких индикаторов UseDebugLibraries в файлы .vcxproj.

CMake 3.30 и выше предпочитает записывать индикаторы UseDebugLibraries, так как они полезны для справок как для человека, так и для инструментов, а также могут повлиять на поведение платформенно-специфичных SDK. Индикатор для каждой конфигурации целевого объекта определяется следующим образом:

  • Если целевой объект компилирует исходники для известной библиотеки MSVC runtime (например, той, что указана в MSVC_RUNTIME_LIBRARY), то UseDebugLibraries равно true для конфигураций, которые компилируются для библиотеки "Debug" runtime, и 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/latest/policy/CMP0162.html

Spec-Zone.ru

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