なんとな~くしあわせ?の日記

「そしてそれゆえ、知識そのものが力である」 (Nam et ipsa scientia potestas est.) 〜 フランシス・ベーコン

Makefileのルールを勉強

会社で触ってる奴とは別の言語をやりたくなる病

参考サイト:
http://www.makelinux.net/make3/make3-CHP-2-SECT-2
トリビアなmakefile入門

Automatic Variables(自動変数)を使ってみる。これを使えばいちいち同じ記述を繰り返さなくて良いみたい。

#今までのMakefile
#
#依存関係 Main (依存)→ Subchan2 (依存)→ Subchan1
#

TARGET 	= Nantoka
OBJECTS = Main.o SubChan1.o SubChan2.o

# Option
CPPFLAGS = -O2 -s -Wall -I/c/MinGW/include `wx-config --cxxflags`
LDFLAGS  = -L/c/MinGW/lib `wx-config --libs`

all : $(TARGET)
$(TARGET) : $(OBJECTS)
		$(CXX) $(OBJECTS) $(LDFLAGS) -o $(TARGET)
SubChan1.o : SubChan1.h
		$(CXX) -c SubChan1.cpp $(CPPFLAGS)
SubChan2.o : SubChan2.h SubChan1.h
		$(CXX) -c SubChan2.cpp $(CPPFLAGS)
Main.o : Main.h SubChan2.h
		$(CXX) -c Main.cpp $(CPPFLAGS)
.PHONY: clean
clean:
	$(RM) -f *.o *.exe

これからのMakefile

#
#依存関係 Main (依存)→ Subchan2 (依存)→ Subchan1
#

TARGET 	= Nantoka
OBJECTS = Main.o SubChan1.o SubChan2.o

# Option
CPPFLAGS = -O2 -s -Wall -I/c/MinGW/include `wx-config --cxxflags`
LDFLAGS  = -L/c/MinGW/lib `wx-config --libs`

all : $(TARGET)
$(TARGET) : $(OBJECTS)
		$(CXX) $^ -o $@ $(LDFLAGS)
SubChan1.o : SubChan1.cpp SubChan1.h
		$(CXX) -c $< $(CPPFLAGS)
SubChan2.o : SubChan2.cpp SubChan2.h SubChan1.h
		$(CXX) -c $< $(CPPFLAGS)
Main.o : Main.cpp Main.h SubChan2.h
		$(CXX) -c $< $(CPPFLAGS)
.PHONY: clean
clean:
	$(RM) -f *.o *.exe