Come includo un percorso per le librerie in g ++


96

Sto cercando di includere il percorso delle librerie extra nel mio makefile, ma non riesco a capire come fare in modo che il compilatore utilizzi quel percorso. finora ho:

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

e voglio includere il percorso per

/data[...]/lib

perché testing.cpp include file di quella libreria. Inoltre, sono su una macchina Linux.

EDIT: non è un percorso per una libreria. Solo per i file che sono stati inclusi. Colpa mia.


Risposte:


168

Per specificare una directory in cui cercare le librerie (binarie), basta usare -L:

-L/data[...]/lib

Per specificare il nome effettivo della libreria, utilizzare -l:

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

Per specificare una directory in cui cercare i file include (diversa dalle librerie!) Si utilizza -I:

-I/data[...]/lib

Quindi penso che quello che vuoi sia qualcosa di simile

g++ -g -Wall -I/data[...]/lib testing.cpp fileparameters.cpp main.cpp -o test

4
Fondamentalmente da qualche parte prima che sia necessario; il -Idovrebbe venire prima dei nomi di file .cpp, per esempio.
Ernest Friedman-Hill

1
È possibile farlo capire al compilatore, ad esempio aggiungere la libreria a una variabile di sistema?
Fred

5
@Fred, sì, g ++ comprende un sacco di variabili d'ambiente che possono essere usate per controllare il percorso di inclusione, il percorso della libreria, ecc.
Ernest Friedman-Hill

1
qual è la differenza tra -L e -I (i maiuscola, non la L inferiore)?
Youda008

1
@ Youda008 Capital ell: percorso di ricerca per le biblioteche. Occhio maiuscolo: percorso di ricerca per i file di inclusione. Small ell: nome della libreria da collegare.
Ernest Friedman-Hill

1

Nel tuo MakeFile o CMakeLists.txt puoi impostare CMAKE_CXX_FLAGS come di seguito:

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -I/path/to/your/folder")
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.