# MSVC_RUNTIME_CHECKS

Added in version 4.0.

Select the list of enabled runtime checks when targeting the MSVC ABI.

The allowed values are:

`PossibleDataLoss`

  Compile with `-RTCc` or equivalent flag(s) to enable possible data loss checks.

`StackFrameErrorCheck`

  Compile with `-RTCs` or equivalent flag(s) to enable stack frame error checks.

`UninitializedVariable`

  Compile with `-RTCu` or equivalent flag(s) to enable uninitialized variables checks.

The value is ignored on compilers not targeting the MSVC ABI, but an unsupported value will be rejected as an error when using a compiler targeting the MSVC ABI.

The value may also be the empty string (`""`), in which case no runtime error check flags will be added explicitly by CMake.

Use `generator expressions` to support per-configuration specification. For example, the code:

    add_executable(foo foo.c)
    set_property(TARGET foo PROPERTY
      MSVC_RUNTIME_CHECKS "$<$<CONFIG:Debug,RelWithDebInfo>:PossibleDataLoss;UninitializedVariable>")

enables for the target `foo` the possible data loss and uninitialized variables checks for the `Debug` and `RelWithDebInfo` configurations.

This property is initialized from the value of the `CMAKE_MSVC_RUNTIME_CHECKS` variable, if it is set. If this property is not set, CMake selects runtime checks using the default value `$<$<CONFIG:Debug>:StackFrameErrorCheck;UninitializedVariable>`, if supported by the compiler, or an empty value otherwise.

Note

This property has effect only when policy `CMP0184` is set to `NEW` prior to the first `project()` or `enable_language()` command that enables a language using a compiler targeting the MSVC ABI.