bate's blog

調べたこと実装したことなどを取りとめもなく書きます。

makefileを書いてみた

依存を比較するサンプル。
更新日付を比較してコマンド部分を実行するかどうかを確認した。
time_a_* と time_b_* のファイルが更新された時にどう動くかということ。

##############
# makefile
##############

# マクロ
STAMP_LIST = stamp_list.txt
TIME_LIST_A = time_list_a.txt
TIME_LIST_B = time_list_b.txt
TIME_A_1 = time_a_1.txt
TIME_A_2 = time_a_2.txt
TIME_B_1 = time_b_1.txt
TIME_B_2 = time_b_2.txt

TIME_A = $(TIME_A_1) $(TIME_A_2)
TIME_B = $(TIME_B_1) $(TIME_B_2)

# ターゲットと依存
all : list
	@echo exec all

list : $(STAMP_LIST)
	@echo exec list

$(STAMP_LIST) : $(TIME_LIST_A) $(TIME_LIST_B)
	@echo exec $^ in $@
	# 空ファイルにする
	:> $@
	# 追加で書き込んでいく
	@echo $^ >> $@
	cat $^ >> $@
	@touch $@

$(TIME_LIST_A) : $(TIME_A)
	@echo exec $< in $@
	# 空ファイルにする
	:> $@
	# 追加で書き込んでいく
	@echo $^ >> $@
	cat $^ >> $@
	@touch $@

$(TIME_LIST_B) : $(TIME_B)
	@echo exec $< in $@
	# 空ファイルにする
	:> $@
	# 追加で書き込んでいく
	@echo $^ >> $@
	cat $^ >> $@
	@touch $@