Como faço para incluir um caminho para bibliotecas em g ++

96

Estou tentando incluir o caminho para bibliotecas extras em meu makefile, mas não consigo descobrir como fazer com que o compilador use esse caminho. até agora eu tenho:

g++ -g -Wall testing.cpp fileparameters.cpp main.cpp -o test

e eu quero incluir o caminho para

/data[...]/lib

porque testing.cpp inclui arquivos dessa biblioteca. Além disso, estou em uma máquina Linux.

EDIT: Não é um caminho para uma biblioteca. Apenas para arquivos que foram incluídos. Foi mal.

mrswmmr
fonte

Respostas:

168

Para especificar um diretório para pesquisar bibliotecas (binárias), você apenas usa -L:

-L/data[...]/lib

Para especificar o nome real da biblioteca, você usa -l:

-lfoo  # (links libfoo.a or libfoo.so)

Para especificar um diretório para pesquisar arquivos de inclusão (diferente de bibliotecas!), Você usa -I:

-I/data[...]/lib

Então eu acho que você quer algo como

g++ -g -Wall -I/data[...]/lib testing.cpp fileparameters.cpp main.cpp -o test
Ernest Friedman-Hill
fonte
4
Basicamente, em algum lugar antes de ser necessário; O -Ideve vir antes dos nomes de arquivo .cpp, por exemplo.
Ernest Friedman-Hill
1
É possível fazer o compilador imaginar isso, como adicionar a biblioteca a uma variável do sistema?
Fred
5
@Fred, sim, g ++ entende um monte de variáveis ​​de ambiente que podem ser usadas para controlar o caminho de inclusão, o caminho da biblioteca, etc.
Ernest Friedman-Hill
1
qual é a diferença entre -L e -I (capital i, não inferior L)?
Youda008
1
@ Youda008 Capital ell: caminho de pesquisa para bibliotecas. Olho maiúsculo: caminho de pesquisa para incluir arquivos. Small ell: nome da biblioteca a ser vinculada.
Ernest Friedman-Hill
1

Em seu MakeFile ou CMakeLists.txt, você pode definir CMAKE_CXX_FLAGS como abaixo:

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -I/path/to/your/folder")
Kartik Javali
fonte