| CMP0204 |
| ------- |
| |
| .. versionadded:: 4.2 |
| |
| A character set is always defined when targeting the MSVC ABI. |
| |
| In CMake 4.1 and below, :ref:`Visual Studio Generators` compile sources in with |
| ``_MBCS``, ``_UNICODE`` or ``_SBCS`` defined due to behavior of Visual Studio |
| itself. The preprocessor definition is not modeled by CMake and is therefore |
| not added by other generators, such as :generator:`Ninja`. |
| |
| CMake 4.2 and above, when targeting the MSVC ABI, prefer to compile sources |
| with ``_MBCS`` defined by all generators unless another charset preprocessor |
| definition is found (``_UNICODE`` or ``_SBCS``). |
| This policy provides compatibility with projects that have not been updated |
| to be aware of the definition. Its setting is recorded by each target as |
| it is created, and affects compilation of sources in that target. |
| |
| The ``OLD`` behavior for this policy does not model the ``_MBCS`` |
| preprocessor definition in CMake itself. The ``NEW`` behavior for this |
| policy adds the ``_MBCS`` preprocessor definition to sources |
| as a default encoding when targeting the MSVC ABI. |
| |
| .. |INTRODUCED_IN_CMAKE_VERSION| replace:: 4.2 |
| .. |WARNS_OR_DOES_NOT_WARN| replace:: does *not* warn |
| .. include:: include/STANDARD_ADVICE.rst |
| |
| .. include:: include/DEPRECATED.rst |