Come aggiungere un percorso di inclusione predefinito per GCC in Linux?


288

Vorrei che gcc includesse file $HOME/includeoltre alle solite directory include, ma non sembra esserci un analogo a $LD_LIBRARY_PATH.

So che posso solo aggiungere la directory include dalla riga di comando durante la compilazione (o nel makefile), ma mi piacerebbe davvero un approccio universale qui, come nel caso della libreria.


3
Ecco il link al manuale di GCC 4.8.1 in cui sono documentate le variabili di ambiente C_INCLUDE_PATH e CPLUS_INCLUDE_PATH .
mloskot,

Risposte:


392

Prova a impostare C_INCLUDE_PATH(per i file di intestazione C) o CPLUS_INCLUDE_PATH(per i file di intestazione C ++).

Come accennato da Ciro, CPATHverrà impostato il percorso per C e C ++ (e qualsiasi altra lingua).

Maggiori dettagli nella documentazione di GCC .


53

Crea un alias per gcc con le tue inclusioni preferite.

alias mygcc='gcc -I /whatever/'

12
Penso che non ci dovrebbe essere spazio dopo-I
Iulius Curt

10
solo una questione di abitudine di omettere lo spazio, proprio come si digita -l<libnam>per collegare Basta notare che la creazione di un alias è una soluzione molto scarsa, in realtà costruiresti un elenco delle tue "inclusioni preferite" e le aggiungeresti al tuo makefile.
h4unt3r,

9
"La seconda alternativa alla libreria come argomento separato è solo per la conformità POSIX e non è consigliata." , secondo il manuale GCC.
Jori,

Non è una buona idea. Questo non è compostabile (cosa succede se si desidera un'altra directory? Cosa succede se si desidera qualche altro interruttore GCC) e può confondere vari script o strumenti automatizzati che fanno ipotesi su gcc.
einpoklum,

8

Un file di specifica gcc può fare il lavoro, tuttavia saranno interessati tutti gli utenti della macchina.

Vedi qui


6

solo una nota: CPLUS_INCLUDE_PATHe C_INCLUDE_PATHnon sono l'equivalente di LD_LIBRARY_PATH. LD_LIBRARY_PATHserve il ld(linker dinamico in fase di runtime) mentre l'equivalente dei primi due che servono il tuo compilatore C / C ++ con l'ubicazione delle librerie è LIBRARY_PATH.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.