次の例では、すべてをビルドするときに、ターゲットmain-gs-universalk9-m.oがルール2ではなくルール1と一致するように見えます。ルール2をルール1の前に定義して移動しても、ルール1に一致します。gnu makeパターンルールが間違ったルールと一致する
これをコーディングして期待どおりに動作させる正しい方法は何ですか?
$(info .FEATURES := $(.FEATURES))
%.o:
@echo "Rule 1 $?"
rm -f [email protected]
cp $*.c [email protected]
main-gs-%-m.o: file1.o file2.o file3.o
@echo "Rule 2"
cat $? > [email protected]
binos_%_version.o:
@echo "Rule 3"
echo "Hello World" > [email protected]
x86-%-m: main-gs-%-m.o binos_%_version.o
@echo "Rule 4"
cat $? > [email protected]
all: x86-universalk9-m
clean:
@echo "Rule Cleaning"
rm -f *.o
rm -f x86-universalk9-m
ルール2のRHSのためではありません。* '% 'はありません(そのような唯一のルールです)。 – o11c
そのルールが%.o:%cの場合、これは期待どおりに機能しているようです。 –