makefile
#makefile # makefile # # ・makeを実際実行せず結果だけを提示する # (https://www.mlab.im.dendai.ac.jp/~tobe/xp-2/gmake.html) # ⇒make -n all # ・暗黙の規則で定義される変数 # (https://www.mlab.im.dendai.ac.jp/~tobe/xp-2/gmake.html) # CC(Cコンパイラ):cc(デフォルト) # CFLAGS(Cコンパイラのフラグ):空(デフォルト) # LDFLAGS(リンカのフラグ):空(デフォルト) # CXX(C++コンパイラ):g++(デフォルト) # CXXFLAGS(C++コンパイラのフラグ):空(デフォルト) # CPP(Cプリプロセッサ):$(CC) -E(デフォルト) # CPPFLAGS(Cプリプロセッサのフラグ):空(デフォルト) # ・自動変数 # (http://www.jsk.t.u-tokyo.ac.jp/~k-okada/makefile/) # $@:ターゲットファイル名 # $%:ターゲットがアーカイブメンバだった時のターゲットメンバ名 # $<:最初の依存するファイルの名前 # $?:ターゲットより新しい全ての依存するファイル名 # $^:全ての依存するファイルの名前 # $+:makefileと同じ順番の依存するファイルの名前 # $*:サフィックスを除いたターゲットの名前 # # プログラム名とオブジェクトファイル名 program = main.exe objs = \ main.o \ katsu.o \ ken.o \ mutsu.o # BinaryFileAccess.o \ # LogOut.o \ # CommonFunc.o \ # Aru.o \ # Betu.o \ # Hito.o \ # Neko.o \ # Rocket.o \ # Samurai.o \ # Gakusei.o \ # hello.o # 定義済みマクロの再定義 # CXX = g++ # CXXFLAGS = -g CC = gcc CFLAGS = # サフィックスルール適用対象の拡張子定義 # .SUFFIXES : .cpp .o .SUFFIXES : .c .o all : clean $(program) # プライマリターゲット $(program) : $(objs) # $(CXX) -o $(program) $^ -L ./lib-cpp -lSLib echo $@ echo $< echo $? echo $^ $(CC) -o $(program) $^ $(RM) $(objs) # サフィックスルール .cpp.c.o : # $(CXX) $(CXXFLAGS) -c $< $(CC) $(CFLAGS) -c $< clean: cls $(RM) $(program) $(objs)