From 81f0fb78f2dce32c2dbdb1513d6db5da67435f03 Mon Sep 17 00:00:00 2001 From: Sam Edwards Date: Mon, 3 Jun 2019 21:47:07 -0600 Subject: [PATCH] CMake: Fix Interrogate macro not working on Windows This was broken by 2d5bdb351557ed1ee51e4026aac26e251045c2a0, which wrote -D flags as -D'symbol' -- this choked Windows, so this commit turns it off in that case. It's a shame there's no generator expression to escape quotes, otherwise this hack wouldn't even be needed. --- cmake/macros/Interrogate.cmake | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/cmake/macros/Interrogate.cmake b/cmake/macros/Interrogate.cmake index cdaea1e2a3..d90c5edadf 100644 --- a/cmake/macros/Interrogate.cmake +++ b/cmake/macros/Interrogate.cmake @@ -210,7 +210,12 @@ function(interrogate_sources target output database language_flags) # in the same way that they are passed to the compiler so that Interrogate # will preprocess each file in the same way. set(_compile_defs "$") - set(define_flags "$<$:-D'$'>") + if(NOT CMAKE_HOST_WIN32) + # Win32's command-line parser doesn't understand "'" + # that's fine, it also ignores '"' + set(_q "'") + endif() + set(define_flags "$<$:-D${_q}$${_q}>") # If this is a release build that has NDEBUG defined, we need that too: foreach(build_type ${CMAKE_CONFIGURATION_TYPES} ${CMAKE_BUILD_TYPE})