zwingen, um die Voraussetzungen zu schaffen, in Makefiles
Habe ich einen Dritten makefile, und ich würde gerne eines der Ziele (T1) nicht gebaut werden, bis eine andere, custom target (T2) wird erst gebaut. Normalerweise würde dies erreicht werden, indem Sie T2 als Voraussetzung für einen T1. ABER, T1 verwendet die $^ in einem seiner Regeln.. so, durch hinzufügen der Voraussetzung, dass ich am Ende brechen die build - ... Was ich habe ist dieses:
T1: x y z T2
$(MAKE) -j $^;
# fails because T2 should not be passed to the make!!!
.PHONY: T2
T2:
#do some linking and prep for T1
Ist es ein guter Weg, um sicherzustellen, dass T2 vor T1? (Hinweis: das Beispiel oben ist wirklich vereinfacht, indem ein bit. T1 ist eigentlich die vmlinux target innerhalb des Linux-kernel-makefile, so umschreiben es ist nicht nur schwierig, es macht den code nicht portabel. Ich kann auch gar nicht laufen, T2, vor dem Aufruf auf den kernel durch einige andere Abhängigkeiten).
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben T2 als bestellen-einzige Voraussetzung:
$^
ist einfach und schnell-Referenz-Anhang. Der erste beschrieben, wie Sie: > Dieser Liste ist nicht enthalten, die um-nur die Voraussetzungen; für diese siehe die$|
variable| A B C
, werden Sie gebaut, um vonA > B > C
?Könnte, rufen Sie einfach in Ihrem build-Skript mit den zwei Zielen in die richtige Reihenfolge, z.B.
So dass Sie nicht brauchen, um alle änderungen zu T1.
make
Ansprechend, trotz der 8x Verlangsamung werde sich bringen. Naja, ich halte es lange genug vor...)