| 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 |