Zbigniew
7/30/2007 4:41:00 PM
Witam,
mam dosc nietypowy makefile z regulami, jak ponizej.
Nietypowosc polega na $(OUT)/ dolaczonym do kazdej definicji.
Czy ktos mi umie powiedziec (i powie), dlaczego nie dziala?
Oczywiscie jesli pousuwam $(OUT)/ z kazdego targetu,
i definicji MODULES, to wszystko zaczyna poprawnie dzialac i kod sie
kompiluje.
Celem moim jest budowanie plikow .o od razu do wskazanego folderu, a
nie do biezacego i potem kopiowanie.
#
# compile help modules used in .so and main server classes
# these modules are included in liasut.a library stored in ./output/
lib
# folder
# Include CPP, CC settings and others flags
include ../make.conf.linux
..SUFFIXES : .o .cpp .c
CPPFLAGS= -c -I"../Include"
CFLAGS= -c -I"../Include"
CDEFS=
OUTL = ../output/Libs
# ta regula dziala po wyrzuceniu wszystkich wystapien $(OUT)/
#.cpp.o:
# @echo "C++ Libs source compilation $<"
# @$(CPP) $(CPPFLAGS) $(CDEFS) $<
$(OUTL)/%.c.$(OUTL)/%.o:
@echo "C Libs source compilation $*.c ==> $(OUTL)/$*.o"
@$(CC) $(CFLAGS) $(CDEFS) $*.c -o $(OUTL)/$*.o
$(OUTL)/%.cpp.$(OUTL)/%.o:
@echo "C++ Libs source compilation $*.cpp ==> $(OUTL)/$*.o"
@$(CPP) $(CPPFLAGS) $(CDEFS) $*.cpp -o $(OUTL)/$*.o
MODULES= $(OUTL)/AmaSocket.o $(OUTL)/AmaStr.o $(OUTL)/DbgLIB.o
lib: $(MODULES)
# @echo "lib $?"
clean:
@echo "Cleaning $(OUTL)/*.o ..."
@rm -f $(OUTL)/*.o *.o
@echo "Cleaned"
$(OUTL)/AmaSocket.o: AmaSocket.cpp
$(OUTL)/AmaStr.o : AmaStr.cpp
$(OUTL)/DbgLIB.o : DbgLIB.cpp
# ponizsza definicja nie dziala, bo nie wie, jak zbudowac DbgLIB.h !
#$(OUTL)/DbgLIB.o : DbgLIB.cpp DbgLIB.h Dbg.h
Zamiescilem ten post rowniez na pl.comp.os.linux.programming
Pozdrawiam,
Zbyszek