Як додати шлях включення за замовчуванням для GCC в Linux?


288

Я хотів би, щоб gcc включав у себе файли, $HOME/includeкрім звичайних каталогів, що включають, але, схоже, це не є аналогом $LD_LIBRARY_PATH.

Я знаю, що я можу просто додати каталог include у командному рядку при компілюванні (або в makefile), але мені дуже хотілося б тут універсального підходу, як у випадку з бібліотекою.


3
Тут посилання на посібник GCC 4.8.1, де задокументовані змінні середовища C_INCLUDE_PATH та CPLUS_INCLUDE_PATH .
mloskot

Відповіді:


392

Спробуйте встановити C_INCLUDE_PATH(для файлів заголовків C) або CPLUS_INCLUDE_PATH(для файлів заголовків C ++).

Як згадував Кіро, CPATHвстановить шлях як для C, так і для C ++ (і будь-якої іншої мови).

Детальніше в документації GCC .


53

Створення псевдоніма для gcc з вашими улюбленими включає.

alias mygcc='gcc -I /whatever/'

12
Я думаю, що після цього не повинно бути місця-I
Іуліюс Керт

10
просто питання звички опускати простір так само, як і ви хочете ввести -l<libnam>посилання. Зауважте, що створення псевдоніма є дуже поганим рішенням. Насправді ви б створили список своїх "улюблених включень" і додали їх у свій makefile.
h4unt3r

9
"Друга альтернатива з бібліотекою як окремим аргументом є лише для відповідності POSIX і не рекомендується." відповідно до посібника GCC.
Джорі

Не гарна ідея. Це некомпонентне (що, якщо ви хочете ще один реж? Що, якщо ви хочете якийсь інший GCC-комутатор) і може заплутати різні сценарії або автоматизовані інструменти, які роблять припущення щодо gcc.
einpoklum

8

Файл gcc spec може виконати цю роботу, однак це вплине на всіх користувачів машини.

Дивіться тут


6

лише примітка: CPLUS_INCLUDE_PATHі C_INCLUDE_PATHне є еквівалентом LD_LIBRARY_PATH. LD_LIBRARY_PATHобслуговує ld(динамічний лінкер під час виконання), тоді як еквівалент попередніх двох, який обслуговує ваш компілятор C / C ++, розміщений у бібліотеках LIBRARY_PATH.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.