make 改訂版(6章 続き, 7章)
昨日の強制リコンパイル時に延々とmakefileを作り直すやつを、もう少し調べてみよう。
make には'-n' っていうオプションがあるみたいで、
実際にコンパイルはしないけど、どういうコマンドを実行しようとしているのかが表示される。
[kobakoba0723@fedora13-intel64 header]$ make -n -f basic.mk make -f basic.mk "FRC=" makefile make[1]: ディレクトリ `header' に入ります rm -f makefile cp basic.mk makefile echo "#Automatically generated dependencies lit:" >> makefile cc -M main.c hoge.c piyo.c >> makefile chmod -w makefile make[1]: ディレクトリ `header' から出ます make "FRC=" main.o hoge.o piyo.o make[1]: ディレクトリ `header' に入ります cc -c -o main.o main.c cc -c -o hoge.o hoge.c cc -c -o piyo.o piyo.c make[1]: ディレクトリ `header' から出ます cc -o main main.o hoge.o piyo.o [kobakoba0723@fedora13-intel64 header]$ make -n -f basic.mk FRC=force_rebuild make -f basic.mk "FRC=force_rebuild" makefile make[1]: ディレクトリ `header' に入ります rm -f makefile cp basic.mk makefile echo "#Automatically generated dependencies lit:" >> makefile cc -M main.c hoge.c piyo.c >> makefile chmod -w makefile make[1]: ディレクトリ `header' から出ます make "FRC=force_rebuild" main.o hoge.o piyo.o make[1]: ディレクトリ `header' に入ります cc -c -o main.o main.c cc -c -o hoge.o hoge.c cc -c -o piyo.o piyo.c make[1]: ディレクトリ `header' から出ます cc -o main main.o hoge.o piyo.o
force_rebuildを指定しても、makefileを作成する処理は1回しか走ってないなぁ。
後は、'-d'オプションか。
これは、makeがどのサフィックスルールを適用したかを逐一出力してくれるオプション
[kobakoba0723@fedora13-intel64 header]$ make -d -f basic.mk FRC=force_rebuild GNU Make 3.81 Copyright (C) 2006 Free Software Foundation, Inc. これはフリーソフトウェアです. 利用許諾についてはソースを ご覧ください. 商業性や特定の目的への適合性の如何に関わらず, 無保証です. This program built for x86_64-redhat-linux-gnu makefile を読み込みます... makefile `basic.mk' の読み込み中... makefile の更新中.... ターゲットファイル `basic.mk' の検討を行います. `basic.mk' のための暗黙ルールを探します. 語幹 `basic.mk' とのパターンルールを試します. 暗黙の必要条件 `basic.mk.o' を試します. 語幹 `basic.mk' とのパターンルールを試します. 暗黙の必要条件 `basic.mk.c' を試します. (以下、省略)
うわぁ、なんか延々と出力してくれる。。。え〜、見るのがつらいな、これf(^ ^;
オブジェクトファイルの作成処理が延々と進んでるなぁ。
make "FRC=force_rebuild" main.o hoge.o piyo.o Re-executing[1]: make FRC=force_rebuild main.o hoge.o piyo.o Re-executing[2]: make FRC=force_rebuild main.o hoge.o piyo.o Re-executing[3]: make FRC=force_rebuild main.o hoge.o piyo.o
ん〜、出力してみたものの何が何だかよくわかんないなぁ。。。
頭からちゃんと出力を追っかけてみるか。