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