GNU make: No rule to make target bei patterns?

11/01/2012 - 21:55 von Peter Mairhofer | Report spam
Hallo,


Folgendes Makefile:

tmp/local/RS_%.xml:
echo I am $*

$ make tmp/local/RS_foo.xml
echo I am foo
I am foo

Aber:

tmp/RS_%.xml: nonexistant
echo I am $*

tmp/local/RS_%.xml: tmp/RS_%.xml
echo I am $*

$ make tmp/local/RS_foo.xml
make: *** Keine Regel, um »tmp/local/RS_foo.xml« zu erstellen. Schluss.


Das ist doch unpassend und verwirrend! Die Regel, die make nicht
erstellen kann ist eindeutig "nonexistant".

Wie kann ich "make" beibringen, die passende Fehlermeldung auszugeben?

LG
Peter
 

Lesen sie die antworten

#1 Stefan Reuther
12/01/2012 - 18:45 | Warnen spam
Peter Mairhofer wrote:
Folgendes Makefile:


[...]
tmp/RS_%.xml: nonexistant
echo I am $*

tmp/local/RS_%.xml: tmp/RS_%.xml
echo I am $*

$ make tmp/local/RS_foo.xml
make: *** Keine Regel, um »tmp/local/RS_foo.xml« zu erstellen. Schluss.

Das ist doch unpassend und verwirrend! Die Regel, die make nicht
erstellen kann ist eindeutig "nonexistant".

Wie kann ich "make" beibringen, die passende Fehlermeldung auszugeben?



Ich würde sagen, gar nicht.

Das Problem ist ja, dass es mehrere Wildcard-Regeln zum Erstellen eines
Zieles geben kann und dank der eingebauten Regeln von Make auch gibt.
Und du willst ja nicht nach 'make xyzzy.o' die Meldung
No rule to make target `xyzzy.c'.
No rule to make target `xyzzy.y'.
No rule to make target `xyzzy.l'.
No rule to make target `xyzzy.w'.
No rule to make target `xyzzy.cc'.
No rule to make target `xyzzy.C'.
No rule to make target `xyzzy.cpp'.
No rule to make target `xyzzy.p'.
No rule to make target `xyzzy.web'.
No rule to make target `xyzzy.f'.
No rule to make target `xyzzy.F'.
No rule to make target `xyzzy.r'.
No rule to make target `xyzzy.s'.
No rule to make target `xyzzy.S'.
No rule to make target `xyzzy.mod'.
erhalten.


Stefan

Ähnliche fragen