2010-11-09 8 views
71

Nowość w C++; Podstawowe zrozumienie obejmuje, biblioteki i proces kompilacji. Czy jeszcze kilka prostych plików Makefile.Jak zdefiniować kilka ścieżek włączania w Makefile

Mój obecny projekt obejmuje korzystanie z bazy danych informix DB i muszę dołączyć pliki nagłówkowe do więcej niż jednego niestandardowego katalogu. Jak to napisać? Nie znalazłem niczego w sieci, prawdopodobnie dlatego, że nie używałem dobrych terminów wyszukiwania

To jest jeden ze sposobów, które próbowałem (nie działa). Wystarczy pokazać 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 

Odpowiedz

80

trzeba poprzedzić każdy katalog z -I:

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

Nadal nie działa dla mnie, choć działa gcc ręcznie robi. – NoBugs

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

dzięki za słuchanie ... tuż po zaksięgowaniu znalazłem brakującą możliwo ja jeszcze nie próbowałem

63

Musisz użyć -I dla każdego katalogu. Ale nadal można oddzielić katalogów ze spacjami jeśli używasz (GNU) make na foreach:

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

+ Oto, po co tu przyszedłem. '$ (foreach ,,)' –

+11

Lub krótszy: 'INC_PARAMS = $ (INC:% = - I%)' z [substytucjami] (https://www.gnu.org/software/make/manual/html_node/Substitution -Refs.html). '$ (foreach ,,)' jest bardziej czytelne, ale podstawienia są tak powszechnie używane, że dobrze jest wiedzieć, jak one działają. – skalee