今回のは、もの凄く初歩的な話です。
C言語のような古き善きプロジェクトではよく見かけるMakefile。
基本的に人様の書いた秘伝のタレをみて何とな〜くわかった気になってしまうヤツですが
思う所あって、自前で勉強してみようと思いました。
まずは解決順の話。
実際のところ
こんなMakefileがあったとします。
first: 1.txt 2.txt cowsay -d Mooo.. 1.txt: hoge.txt echo '1' touch 2.txt 2.txt: 1.txt echo '2' .PHONY: clean clean: rm -r *.txt
何もターゲットを与えないと、以下のような実行結果になります。
$ make echo '1' 1 touch 2.txt echo '2' 2 cowsay -d Mooo.. ________ < Mooo.. > -------- \ ^__^ \ (xx)\_______ (__)\ )\/\ U ||----w | || ||
解決順としては以下のようになります。
1. 一番上にあるターゲット"first"が処理される
2. 第一条件である、1.txtが無いか見に行く
3. 1.txtの前提状況を見、クリア。2.txtが生成される
4. "first"の第二条件"2.txt"は生成されているので移動
5. "2.txt"の内容をクリア
6. 全てが終了したので、"first"の内容をクリア