-
Notifications
You must be signed in to change notification settings - Fork 635
Description
According to the MSVC documentation /Fo "Specifies an object (.obj) file name or directory to be used instead of the default."
And further:
To use the /Fo option to set an output directory for all object files created by the CL command, specify the directory as the pathname argument. A directory is indicated by a trailing slash or backslash in the pathname argument. Use an escaped backslash (a double backslash), if you're using a quoted path. The directory path can be absolute, or relative to the source directory. The specified directory must exist, or the compiler reports error D8003. The directory isn't created automatically.
At the moment sccache always treats /Fo as a filename. Unfortunately by default Visual Studio sets this to $(IntDir) ("Path to the directory specified for intermediate files."). So as a result instead of a main.obj I get a Release.obj.
MSBuild.exe .\CppTest.sln /t:Build /p:Configuration=Release "/verbosity:normal" "/p:CLToolExe=cl.exe" "/p:CLToolPath=C:\dev\sccache"
MSBuild version 17.3.1+2badb37d1 for .NET Framework
Building the projects in this solution one at a time. To enable parallel build, please add the "-m" switch.
Build started 7/25/2023 2:04:36 PM.
Project "C:\dev\CppTest\CppTest.sln" on node 1 (Build target(s)).
ValidateSolutionConfiguration:
Building solution configuration "Release|x64".
Project "C:\dev\CppTest\CppTest.sln" (1) is building "C:\dev\CppTest\CppTest.vcxproj" (2) on node 1 (default targets).
PrepareForBuild:
Creating directory "x64\Release\".
Creating directory "x64\Release\CppTest.tlog\".
InitializeBuildStatus:
Creating "x64\Release\CppTest.tlog\unsuccessfulbuild" because "AlwaysCreate" was specified.
ClCompile:
C:\dev\sccache\cl.exe /c /Z7 /nologo /W3 /WX- /diagnostics:column /sdl /O2 /Oi /GL /D NDEBUG /D _CONSOLE /D _UNICODE /D UNICODE /Gm- /EHsc /MD /GS /Gy /fp:precise /Zc:wchar_t /
Zc:forScope /Zc:inline /permissive- /Fo"x64\Release\\" /Fd"x64\Release\vc143.pdb" /external:W3 /Gd /TP /FC /errorReport:queue main.cpp
main.cpp
Link:
C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.33.31629\bin\HostX64\x64\link.exe /ERRORREPORT:QUEUE /OUT:"C:\dev\CppTest\x64\Release\CppTest.ex
e" /NOLOGO kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /MANIFEST /MANIFESTUAC:"
level='asInvoker' uiAccess='false'" /manifest:embed /DEBUG /PDB:"C:\dev\CppTest\x64\Release\CppTest.pdb" /SUBSYSTEM:CONSOLE /OPT:REF /OPT:ICF /LTCG:incremental /LTCGOUT:"x64\Re
lease\CppTest.iobj" /TLBID:1 /DYNAMICBASE /NXCOMPAT /IMPLIB:"C:\dev\CppTest\x64\Release\CppTest.lib" /MACHINE:X64 x64\Release\main.obj
LINK : fatal error LNK1181: cannot open input file 'x64\Release\main.obj' [C:\dev\CppTest\CppTest.vcxproj]
Done Building Project "C:\dev\CppTest\CppTest.vcxproj" (default targets) -- FAILED.
Done Building Project "C:\dev\CppTest\CppTest.sln" (Build target(s)) -- FAILED.
Build FAILED.
"C:\dev\CppTest\CppTest.sln" (Build target) (1) ->
"C:\dev\CppTest\CppTest.vcxproj" (default target) (2) ->
(Link target) ->
LINK : fatal error LNK1181: cannot open input file 'x64\Release\main.obj' [C:\dev\CppTest\CppTest.vcxproj]
0 Warning(s)
1 Error(s)
ls C:\dev\CppTest\x64
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 7/25/2023 2:04 PM Release
-a---- 7/25/2023 2:04 PM 3530 Release.obj
I am curious how you use sccache on Windows at the moment that this is not an issue for you. For me it looks like this is the last missing piece to actually get this to work.