When I build my c++ solution in Visual Studio it complains that the xxxxx.pch file is missing. Is there a setting I am missing to get the pre-compiled headers back?
here is the exact error for completeness:
Error 1 fatal error C1083: Cannot open precompiled header file: 'Debug\xxxxx.pch': No such file or directory
Yes it can be eliminated with the /Yc options like others have pointed out but most likely you wouldn't need to touch it to fix it. Why are you getting this error in the first place without changing any settings? You might have 'cleaned' the project and than try to compile a single cpp file. You would get this error in that case because the precompiler header is now missing. Just build the whole project (even if unsuccessful) and than build any single cpp file and you won't get this error.
I was searching for the iOS PCH file having the same problem, if you got here like me too, the solution that I've found is by clearing derived data; Close Simulator(s), go to xCode prefs -> locations -> go to the derived data file path, close xCode, delete the files in the derived data folder, re launch and cheers :)
Try Build > Clean Solution, then Build > Build Solution. This works for me.
Fix:
Make sure you have xxxxx.cpp in your project
Compile xxxxx.cpp with /Yc flag (Create Precompiled Header)
(right click on xxxxx.cpp -> properties -> Precompiled Headers -> create)
Compile all other files with /Yu flag (Use Precompiled Header)
(right click on project -> properties -> Precompiled Headers -> use)
Precompiled Header (pch) use is a two-step process.
In step one, you compile a stub file (In VS200x it's usually called
stdafx.cpp
). This stub file indirectly includes only the headers you want precompiled. Typically, one small header (usuallystdafx.h
) lists standard headers such as<iostream>
and<string>
, and this is then included in the stub file. Compiling this creates the .pch file.In step 2, your actual source code includes the same small header from step 1 as the first header. The compiler, when it encounters this special header, reads the corresponding .pch file instead. That means it doesn't have to (re)compile those standard headers every time.
In your case, it seems step 1 fails. Is the stub file still present? In your case, that would probably be
xxxxx.cpp
. It must be a file that's compiled with/Yc:xxxxx.pch
, since that's the compiler flag to indicate it's step 1 of the PCH process. Ifxxxxx.cpp
is present, and is such a stub file, then it's probably missing its/Yc:
compiler option.If everything is right, but this mistake is present, it need check next section in ****.vcxproj file:
In my case it there was an incorrect name of a configuration: only first word.