Spec-Zone.ru › CMake

CMP0184

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

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

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

В CMake 3.31 и более ранних версиях флаги проверок времени выполнения автоматически добавляются CMake в записи кэша по умолчанию CMAKE_<LANG>_FLAGS_<CONFIG>. Это позволяет пользователям редактировать записи кэша, чтобы корректировать флаги. Однако наличие таких флагов по умолчанию создает проблемы для проектов, которым требуется программно выбирать другие проверки времени выполнения. В частности, для этого необходимо редактировать строки переменных CMAKE_<LANG>_FLAGS_<CONFIG>, зная встроенные значения CMake по умолчанию, чтобы заменить их.

В CMake 4.0 и более поздних версиях флаги проверок времени выполнения по умолчанию не включаются в значения CMAKE_<LANG>_FLAGS_<CONFIG>; вместо этого предлагается полноценная абстракция. Для выбора проверок времени выполнения MSVC можно задать переменную CMAKE_MSVC_RUNTIME_CHECKS и свойство цели MSVC_RUNTIME_CHECKS. Если они не заданы, CMake включает проверки времени выполнения только для конфигурации Debug, используя значение по умолчанию $<$<CONFIG:Debug>:StackFrameErrorCheck;UninitializedVariable>, если компилятор его поддерживает, или пустое значение в противном случае.

Эта политика обеспечивает совместимость с проектами, которые еще не были обновлены для работы с этой абстракцией. Настройка политики вступает в силу при выполнении первой команды project() или enable_language(), включающей язык, компилятор которого ориентирован на ABI MSVC.

Примечание

После того как политика вступит в силу в корне проекта, выбранный вариант будет использоваться во всем дереве. В проектах с вложенными проектами в подкаталогах обязательно убедитесь, что все работает с выбранным поведением политики.

Поведение OLD этой политики заключается в добавлении флагов проверок времени выполнения MSVC в записи кэша по умолчанию CMAKE_<LANG>_FLAGS_<CONFIG> и игнорировании абстракции CMAKE_MSVC_RUNTIME_CHECKS. Поведение NEW этой политики заключается в том, чтобы не добавлять флаги проверок времени выполнения MSVC в записи кэша по умолчанию, а вместо этого использовать абстракцию.

Эта политика была введена в версии CMake 4.0. Ее можно задать с помощью cmake_policy() или cmake_minimum_required(). Если она не задана, CMake не выдает предупреждение и использует поведение OLD.

Примечание

Поведение OLD политики по определению считается устаревшим и может быть удалено в будущей версии CMake.

© 2000–2026 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/latest/policy/CMP0184.html

Spec-Zone.ru

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