Jak dodać domyślną ścieżkę dołączania dla GCC w systemie Linux?


288

Chciałbym, aby gcc zawierał pliki $HOME/includeoprócz zwykłych katalogów dołączania, ale wydaje się, że nie ma analogii do $LD_LIBRARY_PATH.

Wiem, że mogę po prostu dodać katalog włączania w wierszu poleceń podczas kompilacji (lub w pliku makefile), ale naprawdę chciałbym tutaj podejście uniwersalne, tak jak w przypadku biblioteki.


3
Oto link do instrukcji GCC 4.8.1, w której dokumentowane są zmienne środowiskowe C_INCLUDE_PATH i CPLUS_INCLUDE_PATH .
mloskot

Odpowiedzi:


392

Spróbuj ustawić C_INCLUDE_PATH(dla plików nagłówka C) lub CPLUS_INCLUDE_PATH(dla plików nagłówka C ++).

Jak wspomniano Ciro, CPATHustawi ścieżkę dla C i C ++ (i każdego innego języka).

Więcej szczegółów w dokumentacji GCC .


53

Utwórz alias dla gcc ze swoimi ulubionymi dołączeniami.

alias mygcc='gcc -I /whatever/'

12
Myślę, że po tym nie powinno być miejsca-I
Iulius Curt

10
to tylko kwestia przyzwyczajenia do omijania miejsca, tak jak -l<libnam>piszesz, aby utworzyć link. Pamiętaj, że utworzenie aliasu jest bardzo kiepskim rozwiązaniem, naprawdę zbudowałbyś listę swoich „ulubionych dołączeń” i dodałeś je do swojego makefile.
h4unt3r

9
„Druga alternatywa z biblioteką jako oddzielnym argumentem dotyczy tylko zgodności z POSIX i nie jest zalecana.” , zgodnie z instrukcją GCC.
Jori,

To nie jest dobry pomysł. Nie można tego skomponować (co jeśli chcesz innego katalogu? A jeśli chcesz innego przełącznika GCC) i może mylić różne skrypty lub automatyczne narzędzia, które przyjmują założenia dotyczące gcc.
einpoklum

8

Plik specyfikacji gcc może wykonać to zadanie, jednak wpłynie to na wszystkich użytkowników komputera.

Zobacz tutaj


6

tylko uwaga: CPLUS_INCLUDE_PATHi C_INCLUDE_PATHnie są odpowiednikiem LD_LIBRARY_PATH. LD_LIBRARY_PATHsłuży ld(dynamiczny linker w czasie wykonywania), podczas gdy odpowiednikiem dwóch poprzednich, który obsługuje kompilator C / C ++ z lokalizacją bibliotek, jest LIBRARY_PATH.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.