CMP0092.rst 1.7 KB

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