1CMP0092
2-------
3
4.. versionadded:: 3.15
5
6MSVC warning flags are not in :variable:`CMAKE_<LANG>_FLAGS` by default.
7
8When using MSVC-like compilers in CMake 3.14 and below, warning flags
9like ``/W3`` are added to :variable:`CMAKE_<LANG>_FLAGS` by default.
10This is problematic for projects that want to choose a different warning
11level programmatically.  In particular, it requires string editing of the
12:variable:`CMAKE_<LANG>_FLAGS` variables with knowledge of the
13CMake builtin defaults so they can be replaced.
14
15CMake 3.15 and above prefer to leave out warning flags from the value of
16:variable:`CMAKE_<LANG>_FLAGS` by default.
17
18This policy provides compatibility with projects that have not been updated
19to expect the lack of warning flags.  The policy setting takes effect as of
20the first :command:`project` or :command:`enable_language` command that
21initializes :variable:`CMAKE_<LANG>_FLAGS` for a given language ``<LANG>``.
22
23.. note::
24
25  Once the policy has taken effect at the top of a project for a given
26  language, that choice must be used throughout the tree for that language.
27  In projects that have nested projects in subdirectories, be sure to
28  convert everything together.
29
30The ``OLD`` behavior for this policy is to place MSVC warning flags in the
31default :variable:`CMAKE_<LANG>_FLAGS` cache entries.  The ``NEW`` behavior
32for this policy is to *not* place MSVC warning flags in the default cache
33entries.
34
35This policy was introduced in CMake version 3.15.  Use the
36:command:`cmake_policy` command to set it to ``OLD`` or ``NEW`` explicitly.
37Unlike many policies, CMake version |release| does *not* warn
38when this policy is not set and simply uses ``OLD`` behavior.
39
40.. include:: DEPRECATED.txt
41