0

リンクを作成しないのはなぜfoo.oですか?

$ ls
foo.c  foo_test.c  Makefile

$ cat Makefile 
.PHONY: test
test: foo_test
%_test: %_test.o foo.o

$ make
cc     foo_test.c   -o foo_test
4

1 に答える 1

3

パターンルールには、それらに関連付けられたレシピが必要です。レシピのないパターンルールは、GNUmakeにそのパターンルールを削除するように指示します。だから、あなたのライン:

%_test: %_test.o foo.o

%_testから構築する存在しないパターンルールを削除する以外は何もしません%_test.o。レシピを有効にするには、レシピを作成する必要があります。

%_test: %_test.o foo.o
        $(CC) -o $@ $(LIBS) $^

または何でも。ただし、これはあなたの例では完全に必要ではありません。そのためのルールはまったく必要ありません。次のように記述してください。

foo_test: foo_test.o foo.o

makeの組み込みルールで処理します。

于 2012-05-22T19:54:57.537 に答える