makeとは、複数のファイルを組み合わせて、
目的のファイルを生成する作業を楽にするためのソフトです。
そのための手順をMakefileに書きます。
たとえば、src1.c
, src2.c
, defs.h
を組み合わせてmain
を作る場合を考えます。
defs.h
は
src1.c
, src2.c
の両方で読み込まれています。
手作業でコンパイルすると、
cc -c src1.c
cc -c src2.c
cc -o main src1.o src2.o
のようになります。
これを毎回やるだけでも面倒ですが、
ソースの一部だけを変更した際にどうすれば最小の手間でコンパイルできるのかを
考えるのはもっと面倒です。
たとえば、src1.c
だけを書き換えた場合は、
cc -c src1.c
cc -o main src1.o src2.o
になります。
defs.h
だけを書き換えた場合は、
cc -c src1.c
cc -c src2.c
cc -o main src1.o src2.o
のように、全てを再コンパイルすることになります。
まず、以下のMakefile
を作ります。
all: main
src1.o: src1.c defs.h
cc -c src1.c
src2.o: src2.c defs.h
cc -c src2.c
main: src1.o src2.o
cc -o main src1.o src2.o
コンパイルする場合には、単に
make
とするだけです。
最も簡単なMakefileは、
ターゲット: ソース
コマンド
のようになります。
ターゲットがソースより古い時に
コマンドを実行します。
ソースは、空白で区切って複数書くことができます。
コマンドも、複数行書くことができます。
ソースやコマンドは省略することもできます。
ソースを省略すると、必ずコマンドを実行します。
マクロ (変数) を使うことができます。 たとえば、
CC = gcc
CFLAGS = -O -I../defs
test: test.c
$(CC) $(CFLAGS) -c test.c
のようになります。
(作成: 2002年10月10日, 最終更新: 2002年10月10日)