私は世界を最もシンプルに(比較的一般的な)Makefile
にしようとしています。何らかの理由でMakefile
がオブジェクトファイルをc: %.o: %.c
という形式にする暗黙のルールを理解するのを拒否すると、no rule to make target %.o
が必要になります。test1.exe
が必要になります。以下は、全体が私のMakefile
次のとおりです。Makefileに私の暗黙のルールが表示されない
INC = sglib
CC = gcc
LD = gcc
LDFLAGS =
# On MS-Windows, say "make os=win" to set proper extensions
os =
SO =
EXE =
ifeq ($(os), win)
SO = dll
EXE = .exe
# -fPIC is a no-op on Windows, but causes a compiler warning
CFLAGS = -std=gnu99 -ggdb3 -Wall
else
SO = so
CFLAGS = -std=gnu99 -ggdb3 -Wall -fPIC
endif
all: test1$(EXE)
test1$(EXE): %.o
$(LD) $< -o [email protected]
lib-test.$(SO): %.o
$(LD) -shared $(LDFLAGS) -o [email protected] $<
%.o: %.c
$(CC) $(CFLAGS) -I$(INC) -c $< -o [email protected]
check:
echo Nothing yet!
.PHONY: all clean
clean:
rm -f *.o *.$(SO) test1$(EXE)
私は窓gnu make 4.2.1
と20とgcc 6.2.0
にmsysを使用しています。私はそこに何が間違っているのか困惑している。それはおそらく単純なものですが、私は今は目が見えないようです。
'%.o:%.c'は' anything.c'をコンパイルして 'anything.o'を得ることができるようにします。しかし、 'test1 $(EXE):%.o'は、' test1 $(EXE) 'を得るために、'%.o'(そのルールを使って '%.c'をコンパイルすることによって得られる) '%.c'というファイルがありますか? – immibis
Whauh!正直言って、ここで皆さんがやっていることは分かりません。 「の追加情報を追加するためにあなたの質問に編集リンクをご利用くださいポストの回答ボタンが唯一の問題への完全な答えを使用する必要があります - 。。口コミより - モルテン・ジェンセン6時間前」 私は望んでいませんでした追加情報を追加するには、私の投稿に答えた人に感謝し、彼らが助けになっていることを確認し、正しい場所を指摘しました。そして今私はanwersを投稿することも禁止されています:-)。 私はかなり混乱していますが、とにかく助けてくれて、自分を楽しんで、みんな良い人生を送ってください。 – user1648090
@ user1648090あなたが答えた人に感謝する方法は、彼らの答えを上書きして、そして/または最も有益なものを受け入れることです。 「誰かが答えるときに何をするか」(http://stackoverflow.com/help/someone-answers)を参照してください。また、[ツアー]を見てください。 – Barry