Como adicionar um caminho de inclusão padrão para o GCC no Linux?

288

Gostaria que o gcc incluísse arquivos $HOME/includealém dos diretórios de inclusão usuais, mas não parece haver um análogo $LD_LIBRARY_PATH.

Eu sei que posso apenas adicionar o diretório include na linha de comando ao compilar (ou no makefile), mas eu realmente gostaria de uma abordagem universal aqui, como no caso da biblioteca.

Jesse Beder
fonte
3
Aqui está o link para o manual do GCC 4.8.1, onde as variáveis ​​de ambiente C_INCLUDE_PATH e CPLUS_INCLUDE_PATH estão documentadas.
mloskot

Respostas:

392

Tente definir C_INCLUDE_PATH(para arquivos de cabeçalho C) ou CPLUS_INCLUDE_PATH(para arquivos de cabeçalho C ++).

Como Ciro mencionou, CPATHdefinirá o caminho para C e C ++ (e qualquer outro idioma).

Mais detalhes na documentação do GCC .

jcrossley3
fonte
53

Crie um alias para o gcc com suas inclusões favoritas.

alias mygcc='gcc -I /whatever/'
dirkgently
fonte
12
Eu acho que não deve haver espaço depois-I
Iulius Curt
10
apenas uma questão de hábito para omitir o espaço, assim como você digitaria -l<libnam>para vincular. Observe que criar um alias é uma solução muito ruim; na verdade, você criaria uma lista de suas 'inclusões favoritas' e as adicionaria ao seu makefile.
H4unt3r 17/05/2013
9
"A segunda alternativa com a biblioteca como argumento separado é apenas para conformidade com POSIX e não é recomendada." , de acordo com o manual do GCC.
Jori
Não é uma boa ideia. Isso é incontrolável (e se você quiser outro diretório? E se quiser outro comutador GCC) e pode confundir vários scripts ou ferramentas automatizadas que fazem suposições sobre o gcc.
einpoklum 23/02
8

Um arquivo de especificação gcc pode fazer o trabalho, no entanto, todos os usuários na máquina serão afetados.

Veja aqui

dimba
fonte
6

apenas uma nota: CPLUS_INCLUDE_PATHe C_INCLUDE_PATHnão é equivalente a LD_LIBRARY_PATH. LD_LIBRARY_PATHserve o ld(o vinculador dinâmico em tempo de execução), enquanto o equivalente dos dois primeiros que servem seu compilador C / C ++ com o local das bibliotecas é LIBRARY_PATH.

Dagim Sisay
fonte