簡単な例として、
test1.c test2.c test1.h test2.h common.h
というファイルをコンパイルしてext.exeという出力ファイルを作ろうとした場合
のMakefileを、とりあえず見たままの関係で簡単に書いてしまうと
以下のような感じになります。
000001| test.exe : test1.obj test2.obj
000002| link test.exe test1.obj test2.obj
000003|
000004| test1.obj : test1.c
000005| cl test1.c
000006|
000007| test2.obj : test2.c
000008| cl test2.c
000009|
000010| test1.c : test1.h common.h
000011| test2.c : test2.h common.h
|
といった感じになる。
意味としては存関係と生成コマンドから成り立っている
test.exe : test1.obj test2.obj の行は
test.exeはtest1.objとtest2.objに依存していて、生成するためのコマンドが
link test.exe test1.obj test2.obj
であることを表している。
以下それぞれのobjファイルも、ソースに依存していて
コンパイルはそれぞれ以下のようなコマンドで行うという感じである
cl test1.c
cl test2.c
これで、それぞれのobjファイルが生成される。
最後の2行はソースとヘッダファイルの依存関係の記述である、
このように記述しておくとヘッダファイルにだけ更新があった場合に
メイクを行うと、ソースファイルが再コンパイルされるわけである。
ターゲット : 依存ファイル
生成コマンド
これがMakefileの基本である、Makeコマンドはファイルの上から順にターゲットを
処理していくが、このときに依存ファイルがなければ、さらに下のほうを参照し
必要なファイルを生成してから、ターゲットファイルの生成を行う
これが基本的な流れである。
仮に依存ファイルがなかったり生成時にエラーが起きた場合はそこで終了する。
今回はライブラリも無いしオプションも無いので簡単なもんだ。