次のような状況があるとしましょう。Makefile
include config.mk
# Generate summary table.
results.txt : $(ZIPF_SRC) isles.dat abyss.dat last.dat
$(ZIPF_EXE) *.dat > $@
# Count words.
.PHONY : dats
dats : isles.dat abyss.dat last.dat
%.dat : books/%.txt $(COUNT_SRC)
$(COUNT_EXE) $< $*.dat
.PHONY : clean
clean :
rm -f *.dat
rm -f results.txt
すべての変数は以下で定義されます。config.mk
LANGUAGE=python
COUNT_SRC=countwords.py
COUNT_EXE=$(LANGUAGE) $(COUNT_SRC)
ZIPF_SRC=testzipf.py
ZIPF_EXE=$(LANGUAGE) $(ZIPF_SRC)
作成するためにinclude
すべての行を拡張できるツールはありますか?現在、そのようなツールがない場合は、これを達成するためのスクリプトを作成できますか?makefile
bigMakefile
python/perl/awk/bash
答え1
これgetline の GNU Awk マニュアル以下はほぼ完璧な例です。
たとえば、次のプログラムは、を除くすべての入力ファイルを出力にコピーします
@include filename
。これらのレコードはファイル名ファイルの内容に置き換えられます。{ if (NF == 2 && $1 == "@include") { while ((getline line < $2) > 0) print line close($2) } else print }
include
代わりに一致するように変更してください@include
。