Makefileの限界はこんなところではない
static ruleというのを使えばいいらしい。
OBJ = hoge/main/Rival.o \ hoge/main/Player.o \ hoge/main/Model.o \ hoge/main/StageView.o \ hoge/main/SubStageView.o \ hoge/main/InitialView.o \ hoge/main/TextView.o \ hoge/main/PlayerInfoView.o $(OBJ) : %.o : %.cpp $(CXX) $(CFLAG) -Ihoge -Ihoge/main -c -o $@ $<
ほええ、とっても簡単に、やりたいことが出来てしまいました。すっきり。
随分使い込んでいるつもりだったけれど、私のMakefileの知識なんてあさはなもんだなぁ。
これじゃいまいちメリットが分かりませんね。
こんなんでどうでしょ?
HOGE_SRC = $(wildcard hoge/*.cpp) HOGE_MAIN_SRC = $(wildcard hoge/main/*.cpp) HOGE_TITLE_SRC = $(wildcard hoge/title/*.cpp) HOGE_OBJ = \ $(HOGE_SRC:.cpp=.o) \ $(HOGE_MAIN_SRC:.cpp=.o) \ $(HOGE_TITLE_SRC:.cpp=.o) $(HOGE_MAIN_SRC:.cpp=.o) : %.o : %.cpp $(CXX) $(CFLAG) -Ihoge -Ihoge/main -c -o $@ $< $(HOGE_TITLE_SRC:.cpp=.o) : %.o : %.cpp $(CXX) $(CFLAG) -Ihoge -Ihoge/title -c -o $@ $< Hoge : $(HOGE_OBJ) $(FW_OBJ) $(SDL_GL2D_OBJ) $(UGLY_FONT_OBJ) $(TINYXPATH_OBJ) $(CXX) $(CFLAG) -o $@ $^ $(LDFLAG)