Ninja Multi-Config: ninja_deps corrupted on Windows caused by *.rc files
Example project to repro the issue.
ninja_deps entry contains "Note: including file:" before the path. This happens only for *.rc files. It looks like the 4th parameter passed to the cmcldeps.exe is empty.
When I pass -DCMAKE_CL_SHOWINCLUDES_PREFIX="Note: including file: " issue is gone. The 4th parameter is populated with "Note: including file: " and everything works.
E:\devel\test>ninja --version
1.8.2
E:\devel\test>cmake.exe --version
cmake version 3.17.0
CMake suite maintained and supported by Kitware (kitware.com/cmake).
E:\devel\test>mkdir build
E:\devel\test>cd build
E:\devel\test\build>cmake .. -G"Ninja Multi-Config"
-- The C compiler identification is MSVC 19.25.28610.4
-- The CXX compiler identification is MSVC 19.25.28610.4
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/BuildTools/VC/Tools/MSVC/14.25.28610/bin/Hostx64/x64/cl.exe
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/BuildTools/VC/Tools/MSVC/14.25.28610/bin/Hostx64/x64/cl.exe - works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/BuildTools/VC/Tools/MSVC/14.25.28610/bin/Hostx64/x64/cl.exe
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/BuildTools/VC/Tools/MSVC/14.25.28610/bin/Hostx64/x64/cl.exe - works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done
-- Generating done
-- Build files have been written to: E:/devel/test/build
E:\devel\test\build>cmake --build . --target main --config Debug -- -v
[1/3] "E:/devel/apps/cmake-3.17.0-win64-x64/bin/cmcldeps.exe" RC E:\devel\test\main.rc CMakeFiles\main.dir\Debug\main.rc.res.d CMakeFiles\main.dir\Debug\main.rc.res "" "C:/Program Files (x86)/Microsoft Visual Studio/2019/BuildTools/VC/Tools/MSVC/14.25.28610/bin/Hostx64/x64/cl.exe" C:\PROGRA~2\WI3CF2~1\10\bin\100183~1.0\x64\rc.exe -DCMAKE_INTDIR=\"Debug\" -DWIN32 -D_DEBUG /fo CMakeFiles\main.dir\Debug\main.rc.res E:\devel\test\main.rc
[2/3] C:\PROGRA~2\MICROS~1\2019\BUILDT~1\VC\Tools\MSVC\1425~1.286\bin\Hostx64\x64\cl.exe /nologo /TP -DCMAKE_INTDIR=\"Debug\" /DWIN32 /D_WINDOWS /W3 /GR /EHsc /MDd /Zi /Ob0 /Od /RTC1 /showIncludes /FoCMakeFiles\main.dir\Debug\main.cpp.obj /FdCMakeFiles\main.dir\Debug\ /FS -c ..\main.cpp
[3/3] cmd.exe /C "cd . && E:\devel\apps\cmake-3.17.0-win64-x64\bin\cmake.exe -E vs_link_exe --intdir=CMakeFiles\main.dir\Debug --rc=C:\PROGRA~2\WI3CF2~1\10\bin\100183~1.0\x64\rc.exe --mt=C:\PROGRA~2\WI3CF2~1\10\bin\100183~1.0\x64\mt.exe --manifests -- C:\PROGRA~2\MICROS~1\2019\BUILDT~1\VC\Tools\MSVC\1425~1.286\bin\Hostx64\x64\link.exe /nologo CMakeFiles\main.dir\Debug\main.cpp.obj CMakeFiles\main.dir\Debug\main.rc.res /out:Debug\main.exe /implib:Debug\main.lib /pdb:Debug\main.pdb /version:0.0 /machine:x64 /debug /INCREMENTAL /subsystem:console kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib && cd ."
LINK : Debug\main.exe not found or not built by the last incremental link; performing full link
E:\devel\test\build>ninja -t deps
CMakeFiles/main.dir/Debug/main.rc.res: #deps 21, deps mtime 606882824 (VALID)
Note: including file: C:/Program Files (x86)/Microsoft Visual Studio/2019/BuildTools/VC/Tools/MSVC/14.25.28610/include/concurrencysal.h
Note: including file: C:/Program Files (x86)/Windows Kits/10/include/10.0.18362.0/shared/sdv_driverspecs.h
Note: including file: C:/Program Files (x86)/Microsoft Visual Studio/2019/BuildTools/VC/Tools/MSVC/14.25.28610/include/sal.h
Note: including file: C:/Program Files (x86)/Windows Kits/10/include/10.0.18362.0/shared/driverspecs.h
Note: including file: C:/Program Files (x86)/Windows Kits/10/include/10.0.18362.0/shared/SpecStrings.h
Note: including file: C:/Program Files (x86)/Windows Kits/10/include/10.0.18362.0/um/verrsrc.h
Note: including file: C:/Program Files (x86)/Windows Kits/10/include/10.0.18362.0/shared/winpackagefamily.h
Note: including file: C:/Program Files (x86)/Windows Kits/10/include/10.0.18362.0/um/commctrl.rh
Note: including file: C:/Program Files (x86)/Windows Kits/10/include/10.0.18362.0/um/dde.rh
Note: including file: C:/Program Files (x86)/Windows Kits/10/include/10.0.18362.0/um/dlgs.h
Note: including file: C:/Program Files (x86)/Windows Kits/10/include/10.0.18362.0/um/winnt.rh
Note: including file: C:/Program Files (x86)/Windows Kits/10/include/10.0.18362.0/um/winuser.rh
Note: including file: C:/Program Files (x86)/Windows Kits/10/include/10.0.18362.0/um/winver.h
Note: including file: C:/Program Files (x86)/Windows Kits/10/include/10.0.18362.0/shared/sdkddkver.h
Note: including file: C:/Program Files (x86)/Windows Kits/10/include/10.0.18362.0/shared/winapifamily.h
Note: including file: C:/Program Files (x86)/Windows Kits/10/include/10.0.18362.0/um/winresrc.h
Note: including file: C:/Program Files (x86)/Windows Kits/10/include/10.0.18362.0/um/Windows.h
cl : Command line warning D9035 : option
o
has been deprecated and will be removed in a future release
main.rc
CMakeFiles/main.dir/Debug/main.cpp.obj: #deps 0, deps mtime 606882824 (VALID)
E:\devel\test\build>
Edited by Brad King