Преглед на файлове

MSVC: Restore _DEBUG preprocessor definition in RC debug builds

In commit v3.8.0-rc1~304^2 (MSVC: Do not define _DEBUG explicitly when
using /MDd, 2016-11-15) we removed the `_DEBUG` preprocessor definition
from MSVC C and C++ flags because the `cl` compiler automatically
defines it in Debug builds anyway.  However, the VS generators propagate
C preprocessor definitions to the RC (Windows Resource Compiler) tool.
This means that we used to explicitly define `_DEBUG` for RC debug
builds.  Therefore existing project code may expect the definition to be
there even though the `rc` compiler itself does not implicitly define
`_DEBUG` in debug builds.

Add the `_DEBUG` flag to the default `CMAKE_RC_FLAGS_DEBUG` instead
to restore this definition for RC debug builds.  This also makes it
available consistently in VS, Ninja, and Makefile generators.

Fixes: #16745
Brad King преди 8 години
родител
ревизия
fff34934e7
променени са 1 файла, в които са добавени 3 реда и са изтрити 0 реда
  1. 3 0
      Modules/Platform/Windows-MSVC.cmake

+ 3 - 0
Modules/Platform/Windows-MSVC.cmake

@@ -310,6 +310,9 @@ macro(__windows_compiler_msvc lang)
   if(NOT CMAKE_RC_FLAGS_INIT)
     string(APPEND CMAKE_RC_FLAGS_INIT " ${_PLATFORM_DEFINES} ${_PLATFORM_DEFINES_${lang}}")
   endif()
+  if(NOT CMAKE_RC_FLAGS_DEBUG_INIT)
+    string(APPEND CMAKE_RC_FLAGS_DEBUG_INIT " /D_DEBUG")
+  endif()
 
   enable_language(RC)
   set(CMAKE_NINJA_CMCLDEPS_RC 1)