tags:

views:

65

answers:

3

Is it possible to specify extra header files to include from the command line (using GCC 4 / C++)?

Or is there any other way files can be included except with #include?

Background: I'm trying to compile a large code base on my own PC. The code is usually compiled in a cluster, with a complicated build system (SoftRelTools anybody?), which is intertwined with the operating system, such that it is virtually impossible to install it somewhere else (literally hundreds of makefiles and shell scripts, and hard coded paths to network drives). However, the actual code is fairly straightforward, and compiles fine, BUT it is missing a lot of includes (mostly a la "include <vector>" and "include <math.h>"). I'm guessing the build system takes care of this usually, but I have to go through the code and add the includes manually, which I'd rather avoid.

A: 

According to gcc documentation, the command line switch "-include file" would do the job.

tibur
+3  A: 

I found the -include option. Does this what you want?

-include file

Process file as if "#include "file"" appeared as the first line of the primary source file. However, the first directory searched for file is the preprocessor's working directory instead of the directory containing the main source file. If not found there, it is searched for in the remainder of the "#include "..."" search chain as normal.

If multiple -include options are given, the files are included in the order they appear on the command line.

mxp
FYI the -include feature is primarily intended to support precompiled headers. This way you can inject your .pch file into all your source files without having to edit every single one.
gavinb
Thanks! Although I did RTFM (M=manpage), I missed that.I also thought PCHs were just a Visual C++ feature... but it seems like this is what they were using in the build system...
jdm
+2  A: 

From the gcc manual:

-include file
   Process file as if "#include "file"" appeared as the first line of the primary source
   file.  However, the first directory searched for file is the preprocessor's working
   directory instead of the directory containing the main source file.  If not found 
   there, it is searched for in the remainder of the "#include "..."" search chain as
   normal.

   If multiple -include options are given, the files are included in the order they 
   appear on the command line.
YuppieNetworking