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.


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 .


53

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

alias mygcc='gcc -I /whatever/'

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


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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.