In pre-processing mode GCC doesn't have target filename and has to guess target name for depfile.<div>Use -MT to force correct target name.<br><div><div><br>gcc -c -MMD -o foo.cc.o foo.cc => foo.cc.o: <dependencies><div>
gcc -E -MMD -o foo.i foo.cc => foo.o: <dependencies><br>gcc -E -MMD -MT foo.cc.o -o foo.i foo.cc => foo.cc.o: <dependencies></div><div><br>---<br> Modules/Compiler/GNU.cmake | 2 +-<br>
Source/cmNinjaTargetGenerator.cxx | 1 +<br> 2 files changed, 2 insertions(+), 1 deletion(-)<br><br>diff --git a/Modules/Compiler/GNU.cmake b/Modules/Compiler/GNU.cmake<br>index bdcaf9d..2c70806 100644<br>--- a/Modules/Compiler/GNU.cmake<br>
+++ b/Modules/Compiler/GNU.cmake<br>@@ -30,7 +30,7 @@ macro(__compiler_gnu lang)<br> # in try_compile mode.<br> GET_PROPERTY(_IN_TC GLOBAL PROPERTY IN_TRY_COMPILE)<br> if(NOT _IN_TC OR CMAKE_FORCE_DEPFILES)<br>- set(CMAKE_DEPFILE_FLAGS_${lang} "-MMD -MF <DEPFILE>")<br>
+ set(CMAKE_DEPFILE_FLAGS_${lang} "-MMD -MT <DEPTARGET> -MF <DEPFILE>")<br> endif()<br> <br> # Initial configuration flags.<br>diff --git a/Source/cmNinjaTargetGenerator.cxx b/Source/cmNinjaTargetGenerator.cxx<br>
index 8fa367f..991bf25 100644<br>--- a/Source/cmNinjaTargetGenerator.cxx<br>+++ b/Source/cmNinjaTargetGenerator.cxx<br>@@ -331,6 +331,7 @@ cmNinjaTargetGenerator<br> depfile = "$out.d";<br> cmSystemTools::ReplaceString(depfileFlagsStr, "<DEPFILE>",<br>
depfile.c_str());<br>+ cmSystemTools::ReplaceString(depfileFlagsStr, "<DEPTARGET>", "$out");<br> flags += " " + depfileFlagsStr;<br> }<br> vars.Flags = flags.c_str();<br>
-- <br>1.7.9.4<br></div></div></div></div>