Wie füge ich einen Standard-Include-Pfad für GCC unter Linux hinzu?

288

Ich möchte, dass gcc $HOME/includezusätzlich zu den üblichen Include-Verzeichnissen Dateien enthält, aber es scheint kein Analogon zu geben $LD_LIBRARY_PATH.

Ich weiß, dass ich beim Kompilieren (oder im Makefile) einfach das Include-Verzeichnis in der Befehlszeile hinzufügen kann, aber ich möchte hier wirklich einen universellen Ansatz, wie im Fall der Bibliothek.

Jesse Beder
quelle
3
Hier ist ein Link zum GCC 4.8.1-Handbuch, in dem die Umgebungsvariablen C_INCLUDE_PATH und CPLUS_INCLUDE_PATH dokumentiert sind.
Mloskot

Antworten:

392

Versuchen Sie die Einstellung C_INCLUDE_PATH(für C-Header-Dateien) oder CPLUS_INCLUDE_PATH(für C ++ - Header-Dateien).

Wie Ciro erwähnt, CPATHwird der Pfad sowohl für C als auch für C ++ (und jede andere Sprache) festgelegt.

Weitere Details in der Dokumentation von GCC .

jcrossley3
quelle
53

Erstellen Sie einen Alias ​​für gcc mit Ihren bevorzugten Includes.

alias mygcc='gcc -I /whatever/'
dirkgently
quelle
12
Ich denke, es sollte kein Platz mehr danach sein-I
Iulius Curt
10
Es ist nur eine Gewohnheit, den Leerzeichen wegzulassen, genau wie Sie -l<libnam>einen Link eingeben würden. Beachten Sie nur, dass das Erstellen eines Alias ​​eine sehr schlechte Lösung ist. Sie würden wirklich eine Liste Ihrer bevorzugten Includes erstellen und diese in Ihr Makefile einfügen.
h4unt3r
9
"Die zweite Alternative mit der Bibliothek als separatem Argument betrifft nur die POSIX-Konformität und wird nicht empfohlen." , gemäß dem GCC-Handbuch.
Jori
Keine gute Idee. Dies ist nicht zusammensetzbar (was ist, wenn Sie ein anderes Verzeichnis möchten? Was ist, wenn Sie einen anderen GCC-Switch möchten) und kann verschiedene Skripte oder automatisierte Tools verwirren, die Annahmen über gcc treffen.
Einpoklum
8

Eine gcc-Spezifikationsdatei kann den Job ausführen, jedoch sind alle Benutzer auf dem Computer betroffen.

Siehe hier

dimba
quelle
6

nur eine Anmerkung: CPLUS_INCLUDE_PATHund C_INCLUDE_PATHsind nicht das Äquivalent von LD_LIBRARY_PATH. LD_LIBRARY_PATHdient dem ld(dem dynamischen Linker zur Laufzeit), wohingegen das Äquivalent der beiden vorherigen, die Ihrem C / C ++ - Compiler mit dem Speicherort der Bibliotheken dienen, ist LIBRARY_PATH.

Dagim Sisay
quelle