2010-11-09 14 views
71

Nuovo in C++; Comprensione di base di include, librerie e processo di compilazione. Ancora alcuni semplici makefile.Come definire diversi percorsi di inclusione nel Makefile

Il mio progetto attuale prevede l'utilizzo di un API DB informix e devo includere i file di intestazione in più di una directory non standard. Come si scrive? Havent ha trovato nulla in rete, probabilmente perché non ho usato buoni termini di ricerca

Questo è un modo che ho provato (non funziona). Giusto per dimostrare il makefile

LIB=-L/usr/informix/lib/c++ 
INC=-I/usr/informix/incl/c++ /opt/informix/incl/public 

default: main 

main: test.cpp 
     gcc -Wall $(LIB) $(INC) -c test.cpp 
     #gcc -Wall $(LIB) $(INC) -I/opt/informix/incl/public -c test.cpp 

clean: 
     rm -r test.o make.out 

risposta

80

Bisogna anteporre ogni directory con -I:

INC=-I/usr/informix/incl/c++ -I/opt/informix/incl/public 
+0

E ancora non funziona per me, anche se in esecuzione gcc fa manualmente. – NoBugs

2
INC=-I/usr/informix/incl/c++ -I/opt/informix/incl/public 

grazie per l'ascolto ... subito dopo la pubblicazione ho trovato il possiblity mancante che non avevo ancora provato

63

È necessario utilizzare -I con ciascuna directory. Ma è ancora possibile delimitare le directory con spazi se si utilizza (GNU) di foreach marca:

INC=$(DIR1) $(DIR2) ... 
INC_PARAMS=$(foreach d, $(INC), -I$d) 
+6

+ Questo è quello che sono venuto qui cercando. '$ (foreach ,,)' –

+11

O più corto: 'INC_PARAMS = $ (INC:% = - I%)' con [sostituzioni] (https://www.gnu.org/software/make/manual/html_node/Substitution -Refs.html). '$ (foreach ,,)' è più leggibile, ma le sostituzioni sono così comunemente usate che è bene familiarizzare come funzionano comunque. – skalee

Problemi correlati