ターゲットを書き込む方法はありますか
1) オブジェクトファイルのみを作成しますか?
2) オブジェクトファイルをリンクしてバイナリファイルを作成するためだけですか?
2 つのステップでバイナリ ファイルを作成できるようにしたいと考えています。
ターゲットを書き込む方法はありますか
1) オブジェクトファイルのみを作成しますか?
2) オブジェクトファイルをリンクしてバイナリファイルを作成するためだけですか?
2 つのステップでバイナリ ファイルを作成できるようにしたいと考えています。
そのための暗黙のルールがあります。次の Makefile があるとします。
CC=cc -g
all: client
client: client.c
$(CC) client.c -o client
clean:
-rm -f client
オブジェクトファイルのみが必要な場合は、次を実行するだけです。
$ make client.o
そして、オブジェクトファイルを取得します。ただし、次のような明示的なルールを記述することもできます。
%.o: %.c
$(CC) -c $<
前のルールは、任意の.c
ファイルからオブジェクト ( .o
) ファイルにビルドするルールです。$<
ルールが依存するファイルの名前を取得するのに役立ちます。
複数のオブジェクト ファイルがある場合は、変数を定義する必要があります。
objects = client.o foo.o bar.o
client: $(objects)
$(cc) -o $@ $(objects)
$(objects): config.h
clean:
-rm -f client $(objects)
この場合、objects
はコンパイルするオブジェクト ファイルに関連付けられた変数です。これはルールclient
で依存関係およびそれらをリンクするための引数として使用されます。また、ヘッダー ファイルに依存するルールを定義するためにも使用され (config.h
この例では)、finalle はclean
ルールでそれらを削除して最初からやり直すために使用されます。
$@
ルールの名前の代わりです。最後の場合は になりますclient
。
GNU Makeのマニュアルには、学習プロセスを啓発する多くの例が含まれています。