Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Manipulating the search path for include files

Tags:

c

include

gcc

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?

like image 502
Dan Hook Avatar asked Oct 19 '25 19:10

Dan Hook


2 Answers

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

like image 162
Karl Voigtland Avatar answered Oct 21 '25 08:10

Karl Voigtland


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...

like image 35
dmckee --- ex-moderator kitten Avatar answered Oct 21 '25 08:10

dmckee --- ex-moderator kitten