うまいぼうぶろぐ

linuxとhttpdとperlのメモ

makefileの書式

忘れるからメモ。

マクロ変数の定義

  • 変数を使う時は$(変数)

変数 = 値(文字列)

CC = cc
CFLAGS = -c
INCLUDE = -I ../include

依存関係とコマンドの書式

  • ターゲット : 依存するファイル

生成コマンド

コマンドの前は空白ではなくてtabなので注意。

hoge.o : hoge.c piyo.h
  $(CC) $(CFLAGS) hoge.c $(INCLUDE)
fuga   : hoge.o piyo.h
  $(CC) -o $@ hoge.o 

一番最後の"$@"はmakeの特殊変数。ターゲット名に置き換わる。

サフィックスルールで書く

これは便利。というか普通はこれを使う?一般的な書式の例がわからないのでCの例を。
ex)

.c.o : 
  $(CC) $(CFLAGS) $< $(INCLUDE)
hoge.o : piyo.h

ターゲットのところには、.src.destって感じで拡張子を書く。で、コマンドでソースファイル名を書く変わりに"$<"を書く。この例なら.c(ソース)から同名の.o(オブジェクト)が出来上がる。注意点としては、(ソース以外にもあれば)依存関係を書かないといけないこと。