Recognize the reported compiler error
g++.exe: fatal error: cannot specify '-o' with '-c', '-S' or '-E' with multiple filesThis message is not the same as Ninja missing libSPIRV.a. Ninja may invoke the failing compiler, but the first compiler error identifies the stage to inspect. Save the failing command and the first failure above the final build-stopped line.
Why a source-directory space can matter
Issue #8607 identifies an unquoted forced-include path inside a CMake SHELL option. Splitting that path makes GCC see an extra input. Its reporter tested a local quoting change for three Windows-specific include options and reports a successful libs build. The issue was still open at our 21 October review. We have not independently reproduced it; it does not establish a game runtime result.
1. Check the compiler command before changing dependencies
Record the source commit, Windows version and GCC, CMake and Ninja versions. Inspect the source root and the expanded path following -include. If that path contains spaces, check whether its argument reaches the compiler as one value. A path merely appearing quoted elsewhere in the command does not settle the forced-include argument.
Do not paste a compiler command from a different source revision into your build. The relevant CMake lines can move. Compare the original issue with the files in your checkout, then review any newer upstream correction.
2. Use a separate comparison build
A fresh checkout in a short path without spaces can help isolate this variable. Keep the same source revision and toolchain, initialize the documented submodules, and configure a new build directory. Preserve the original workspace and logs. Moving an existing CMake build tree can leave cached absolute paths and introduce a different failure.
If you review a local quoting change, check all affected Windows forced-include sites against the source report rather than replacing complete CMake files from an unrelated download. Keep a small diff so it can be inspected and reversed. This checklist does not apply that patch automatically.
3. Confirm the scope of the result
Record whether the libs target completes and whether the original compiler error disappears. A successful library build does not validate the converter, runtime layout or game compatibility. If another error appears, save that first failure as a separate observation.
If your paths have no spaces or the compiler error differs, investigate the actual command instead of forcing this explanation. Use the missing libSPIRV.a checks only for that dependency message. Return to the illustrated build step after resolving configuration and compilation.
Sources
Prepare your next step.
Use the local tools alongside the upstream documentation.