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)