0

ターゲットを書き込む方法はありますか

1) オブジェクトファイルのみを作成しますか?

2) オブジェクトファイルをリンクしてバイナリファイルを作成するためだけですか?

2 つのステップでバイナリ ファイルを作成できるようにしたいと考えています。

4

1 に答える 1

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のマニュアルには、学習プロセスを啓発する多くの例が含まれています。

于 2012-10-26T03:57:46.387 に答える