2009年11月6日金曜日

【make】 1 簡単なメイクファイルを書いてみよう


* 1 簡単なメイクファイルを書いてみよう

** 1.1 ターゲットと必須項目

- makefileにはプログラムを構築するためのルールを
記述する。
- ルールは、target、prereq (前提項目)、commandsの
3つから構成される。
- ルールの構文は次のとおり (簡略版1)。

target: prereq1 prereq2 ... prereqn
commands

例1
------
hello: hello.c
gcc hello.c -o hello
------

例2
------
foo.o: foo.c foo.h
gcc -c foo.c
------

例3
------
bar: bar.o lexer.o -lfl
gcc -c bar.o lexer.o -lfl -obar
------

- makeは、gccと同じように、-lにてリンクする
システムライブラリを表現できる。
- makefileの先頭にあるルールをデフォルトルールと
呼ぶ。
- makeの引数にはターゲットを書く。対応するルール
が実行される。
- 引数なしで起動した場合はデフォルトルールが実行
される。
- commandsはサブシェルに渡される。

** 1.2 依存関係の検証

- GNU make は、ターゲットと前提条件の連鎖を辿り、
指定されたターゲットを作成するために必要な作業
を特定して、実行する。

** 1.3 再構築作業を最小にする

- makeは、ターゲットファイルが存在する場合、ターゲッ
トファイルと前提条件ファイル達の更新日時を比較し
て、前提のなかにターゲットよりも新しいものがある
ときだけ、Commandsを実行する。

** 1.4 makeの実行

- ここまでの前提。
- makeのルールを記述したファイルは次のいずれか
である。
- makefile
- Makefile
- GNUMakefile
- ファイルはすべて同一ディレクトリにある。
- そのディレクトリにてmakeを実行する。

** 1.5 makefileの基本文法

- ルールの構文 (簡略版2)

target1 target2 ... targetN : prerequiste1 prerequiste2 ... prerequisteM
command1
command2
...
commandK

- commandの前はタブです。
- コメント文字は'#'。
- '\'でcommandを次行に継続できる。(シェルと同じ)


こつこつ。

0 件のコメント: