Jak zdefiniować kilka ścieżek włączania w Makefile


98

Nowość w C ++; Podstawowe rozumienie dołączeń, bibliotek i procesu kompilacji. Zrobiłem już kilka prostych plików makefile.

Mój obecny projekt obejmuje korzystanie z informix DB API i muszę dołączyć pliki nagłówkowe w więcej niż jednym niestandardowym katalogu. Jak to napisać? Havent znalazł coś w sieci, prawdopodobnie dlatego, że nie użyłem dobrych wyszukiwanych haseł

To jeden ze sposobów, które próbowałem (nie działa). Tylko po to, żeby pokazać plik 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

Odpowiedzi:


116

Musisz poprzedzić każdy katalog -I:

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

1
Wciąż nie działa dla mnie, chociaż ręczne uruchomienie gcc to robi.
NoBugs

94

Musisz użyć -Iz każdym katalogiem. Ale nadal możesz rozgraniczać katalogi białymi spacjami, jeśli używasz (GNU) make foreach:

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

18
Lub krócej: INC_PARAMS=$(INC:%=-I%)z substytucjami . $(foreach,,)jest bardziej czytelny, ale podstawienia są tak powszechnie używane, że i tak dobrze jest zapoznać się z ich działaniem.
skalee

5
lub INC_PARAMS = $(addprefix -I,$(INC)).
Ma Ming
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.