MAKEFILE 1 Podstawowa wersja pliku makefile 2 Podstawowa
Transkrypt
MAKEFILE 1 Podstawowa wersja pliku makefile 2 Podstawowa
MAKEFILE 1 Podstawowa wersja pliku makefile wynik.exe : main.o cos.o g++ -Wall -o wynik.exe main.o cos.o main.o: main.cpp main.h g++ -Wall -o main.o -c main.cpp cos.o : cos.cpp cos.h g++ -Wall -o cos.o -c cos.cpp clean: rm -f *.o rm -f wynik.exe 2 Podstawowa wersja pliku makefile z zastosowanymi zmiennymi automatycznymi wynik.exe : main.o cos.o g++ -Wall -o $@ $^ main.o: main.cpp main.h g++ -Wall -o $@ -c $< cos.o : cos.cpp cos.h g++ -Wall -o $@ -c $< clean: rm -f *.o rm -f wynik.exe .PHONY: clean 1 3 Podstawowa wersja pliku makefile z zastosowanymi zmiennymi zwykłymi oraz automatycznymi FILE_O = wynik.exe FILE_I = main.o cos.o GCC = g++ FLAGI = -Wall $(FILE_O) : $(FILE_I) $(GCC) $(FLAGI) -o $@ $^ main.o: main.cpp main.h $(GCC) $(FLAGI) -o $@ -c $< cos.o : cos.cpp cos.h $(GCC) $(FLAGI) -o $@ -c $< clean: rm -f *.o rm -f $(FILE_O) .PHONY: clean 4 Podstawowa wersja pliku makefile z zastosowanymi zmiennymi zwykłymi, automatycznymi oraz regułami domyślnymi FILE_O = wynik.exe FILE_I = main.o cos.o CXX = g++ CXXFLAGS= -Wall $(FILE_O) : $(FILE_I) $(GXX) $(CXXFLAGS) -o $@ $^ main.o : main.h cos.o : cos.h clean: rm -f *.o rm -f $(FILE_O) .PHONY: clean 2 5 Podstawowa wersja pliku makefile z zastosowanymi zmiennymi zwykłymi, automatycznymi oraz redefinicją reguły domyślnej FILE_O = wynik.exe FILE_I = main.o cos.o GCC = g++ CPPFLAGS= -Wall %.o:%.cpp $(GCC) $(CPPFLAGS) -c -o $@ $< $(FILE_O) : $(FILE_I) $(GCC) $(FLAGI) -o $@ $^ main.o : main.h cos.o : cos.h clean: rm -f *.o rm -f $(FILE_O) .PHONY: clean 6 „Uniwersalana” wersja pliku makefile FILE_O = FILE_I = DEP = CXX = CXXFLAGS= wynik $(wildcard *.cpp) $(FILE_I:%.cpp=%.d) g++ -Wall %.d :%.cpp $(CXX) -MM $< > $@ sed "s/\.o/\.d/" < $@ > [email protected] cat [email protected] >> $@ rm [email protected] $(FILE_O) : $(FILE_I:%.cpp=%.o) $(CXX) $(CXXFLAGS) -o $@ $^ -include $(DEP) clean: rm -f *.o rm -f $(FILE_O) rm -f *.d .PHONY: clean 3