Comment ajouter un chemin d'inclusion par défaut pour GCC sous Linux?

288

J'aimerais que gcc inclue des fichiers $HOME/includeen plus des répertoires include habituels, mais il ne semble pas y avoir d'analogue $LD_LIBRARY_PATH.

Je sais que je peux simplement ajouter le répertoire include à la ligne de commande lors de la compilation (ou dans le makefile), mais j'aimerais vraiment une approche universelle ici, comme dans le cas de la bibliothèque.

Jesse Beder
la source
3
Voici le lien vers le manuel GCC 4.8.1 où les variables d'environnement C_INCLUDE_PATH et CPLUS_INCLUDE_PATH sont documentées.
mloskot

Réponses:

392

Essayez de définir C_INCLUDE_PATH(pour les fichiers d'en-tête C) ou CPLUS_INCLUDE_PATH(pour les fichiers d'en-tête C ++).

Comme Ciro l'a mentionné, CPATHdéfinira le chemin d'accès à la fois pour C et C ++ (et pour tout autre langage).

Plus de détails dans la documentation de GCC .

jcrossley3
la source
53

Créez un alias pour gcc avec vos inclus préférés.

alias mygcc='gcc -I /whatever/'
dirkgently
la source
12
Je pense qu'il ne devrait pas y avoir d'espace après-I
Iulius Curt
10
juste une question d'habitude pour omettre l'espace, tout comme vous taperiez -l<libnam>pour lier Notez juste que la création d'un alias est une très mauvaise solution, vraiment vous construirez une liste de vos `` inclusions préférées '' et les ajouterez dans votre makefile.
h4unt3r
9
"La deuxième alternative avec la bibliothèque comme argument séparé est uniquement pour la conformité POSIX et n'est pas recommandée." , selon le manuel GCC.
Jori
Pas une bonne idée. Ceci n'est pas composable (et si vous voulez un autre répertoire? Et si vous voulez un autre commutateur GCC) et peut confondre divers scripts ou outils automatisés qui font des hypothèses sur gcc.
einpoklum
8

Un fichier de spécification gcc peut faire le travail, mais tous les utilisateurs de la machine seront affectés.

Voir ici

dimba
la source
6

juste une note: CPLUS_INCLUDE_PATHet C_INCLUDE_PATHne sont pas l'équivalent de LD_LIBRARY_PATH. LD_LIBRARY_PATHsert le ld(l'éditeur de liens dynamique à l'exécution) alors que l'équivalent des deux précédents qui sert votre compilateur C / C ++ avec l'emplacement des bibliothèques est LIBRARY_PATH.

Dagim Sisay
la source