4

My development environment is such that I have some_header.h in /usr/include and in /another/directory. /another/directory contains some header files I need to include in my program, but I want to use some_header.h from /usr/include. When I use

 gcc ... -I/another/directory 

gcc uses /another/directory/some_header.h. If I use

 gcc ... -I/usr/include -I/another/directory 

gcc does the same thing because it ignores /usr/include since it is part of the standard search path, but it gets searched after non standard directories included with -I.

Any ideas?

1
  • Killed my answer, I had it backwards. Commented Aug 6, 2009 at 19:33

3 Answers 3

9

Use the -iquote switch:

Include the files that are in another/directory using quotes:

#include "another_file.h" 

Then use

gcc -iquote /another/include ... 

to add a search path for quoted include files. This switch will add a directory that is searched for quoted include files after the current directory and before -I and system include paths.

Include your other include files using brackets (i.e. #include <header.h>).

See here for more information: Where are include files stored - Ubuntu Linux, GCC

Sign up to request clarification or add additional context in comments.

2 Comments

This seemed so close to working, but it turns out that the files in /another/directory use #include<file.h> so they couldn't find their include files when I used -iquote.
Hmm, thats odd. The preprocessor should still search for <file.h> in the -I and system include paths. Seems to work for me.
5

Have you looked at -nostdinc ?

The manual says:

-nostdinc
Do not search the standard system directories for header files. Only the directories you have specified with -I options (and the directory of the current file, if appropriate) are searched.

Of course that means that you will have to specify anything that normally goes on the standard search path that you do want...

Comments

0

Have you tried unsetting the system INCLUDE path environment variable?

1 Comment

Well, it's empty, but that doesn't matter. gcc automatically looks in certain directories, irrespective of environment variables. gcc.gnu.org/onlinedocs/gcc-4.1.1/cpp/…

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.