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