MSVC: Revert "Default to -ZI instead of /Zi for x86 and x64"

Revert commit 5fcadc481e (MSVC: Default to -ZI instead of /Zi for x86
and x64, 2022-05-24).  The `-ZI` flag is incompatible with the `-GL`
flag used for IPO, and so is not an unconditionally better default.
Revert the change pending future design of a first-class setting for
MSVC debug info format that can be automatically reconciled with IPO
settings.

That commit introduced policy CMP0138, but we already have later policy
numbers used too.  Leave placeholder text to avoid policy renumbering.

Issue: #23607, #10189
This commit is contained in:
Brad King
2022-06-09 12:11:49 -04:00
parent 84da420a29
commit 7d73e88d3a
14 changed files with 6 additions and 100 deletions
+1 -1
View File
@@ -59,7 +59,7 @@ Policies Introduced by CMake 3.24
:maxdepth: 1
CMP0139: The if() command supports path comparisons using PATH_EQUAL operator. </policy/CMP0139>
CMP0138: MSVC compilers use -ZI instead of /Zi for x86 and x64 by default. </policy/CMP0138>
CMP0138: Placeholder for reverted policy. </policy/CMP0138>
CMP0137: try_compile() passes platform variables in project mode. </policy/CMP0137>
CMP0136: Watcom runtime library flags are selected by an abstraction. </policy/CMP0136>
CMP0135: ExternalProject ignores timestamps in archives by default for the URL download method. </policy/CMP0135>
+1 -31
View File
@@ -3,37 +3,7 @@ CMP0138
.. versionadded:: 3.24
MSVC compilers use ``-ZI`` instead of ``/Zi`` for x86 and x64 by default.
When using MSVC C/C++ compilers in CMake 3.23 and below, debug information
format flag ``/Zi`` is added to :variable:`CMAKE_<LANG>_FLAGS_DEBUG` and
:variable:`CMAKE_<LANG>_FLAGS_RELWITHDEBINFO` by default. The ``/Zi`` flag
produces a separate PDB file that contains all the symbolic debugging
information for use with the debugger, however, it does not support Edit
and Continue feature in a debugging session.
CMake 3.24 and above adds ``-ZI`` to :variable:`CMAKE_<LANG>_FLAGS_DEBUG`
and :variable:`CMAKE_<LANG>_FLAGS_RELWITHDEBINFO` instead to enable Edit
and Continue by default.
This policy provides compatibility with projects that have not been updated
to expect the lack of warning flags. The policy setting takes effect as of
the first :command:`project` or :command:`enable_language` command that
initializes :variable:`CMAKE_<LANG>_FLAGS_DEBUG` and
:variable:`CMAKE_<LANG>_FLAGS_RELWITHDEBINFO` for a given language
``<LANG>`` using MSVC compilers.
.. note::
Once the policy has taken effect at the top of a project for a given
language, that choice must be used throughout the tree for that language.
In projects that have nested projects in subdirectories, be sure to
convert everything together.
The ``OLD`` behavior for this policy is to place ``/Zi`` in the default
:variable:`CMAKE_<LANG>_FLAGS_DEBUG` and
:variable:`CMAKE_<LANG>_FLAGS_RELWITHDEBINFO` cache entries. The ``NEW``
behavior for this policy is to place ``-ZI`` in the default cache entries.
Placeholder for reverted policy.
This policy was introduced in CMake version 3.24. Use the
:command:`cmake_policy` command to set it to ``OLD`` or ``NEW`` explicitly.
-3
View File
@@ -319,9 +319,6 @@ Deprecated and Removed Features
Other Changes
=============
* With MSVC compilers, debug configurations now use ``-ZI`` by default
instead of ``/Zi``. See policy :policy:`CMP0138`.
* CMake no longer sets environment variables like :envvar:`CC`, :envvar:`CXX`,
etc. when enabling the corresponding language during the first CMake run in
a build directory. See policy :policy:`CMP0132`.