I have a Visual Studio C++ based program that uses pre-compiled headers (stdafx.h
). Now we are porting the application to Linux using gcc 4.x.
The question is how to handle pre-compiled header in both environments. I've googled but can not come to a conclusion.
Obviously I want leave stdafx.h
in Visual Studio since the code base is pretty big and pre-compiled headers boost compilation time.
But the question is what to do in Linux. This is what I found:
- Leave the
stdafx.h
as is. gcc compiles code considerable faster than VC++ (or it is just my Linux machine is stronger ... :) ), so I maybe happy with this option. Use approach from here - make
stdafx.h
look like (setUSE_PRECOMPILED_HEADER
for VS only):#ifdef USE_PRECOMPILED_HEADER ... my stuff #endif
Use the approach from here - compile VC++ with
/FI
to implicitly includestdafx.h
in each cpp file. Therefore in VS your code can be switched easily to be compiled without pre-compiled headers and no code will have to be changed.
I personally dislike dependencies and the messstdafx.h
is pushing a big code base towards. Therefore the option is appealing to me - on Linux you don't havestdafx.h
, while still being able to turn on pre-compiled headers on VS by/FI
only.- On Linux compile
stdafx.h
only as a precompiled header (mimic Visual Studio)
Your opinion? Are there other approaches to treat the issue?