Dies gibt mir einen Fehler, der, obwohl es aufgrund der .IGNORE-Anweisung ignoriert wird, es ärgerlich ist. Der Fehler wird angezeigt, wenn $ (Basisname $ <) .err nicht vorhanden ist. Die Linie im Rezept sieht wie folgt aus:Makefile doppelt Ampersand (&&) gibt einen Fehler
[ -r "$(basename $<).err" ] && mv -f $(basename $<).err anotherName.err
Ich denke, die eckige Klammer Test ist falsch und dies wird durch make als Fehler interpretiert.
Great !!. Das hat funktioniert. Ich habe das ** || benutzt true ** am Ende, um die Lesbarkeit zu erhalten. –
Übrigens habe ich zuvor versucht, den ganzen Befehl in eine Shell wie diese ** $ (Shell ...) ** zu schreiben, und das Ergebnis war, dass das ** mv -f ** nicht passiert, wenn die Datei das tut existiert. Das ist komisch, ich habe dafür keine Erklärung. –
Ich müsste die tatsächliche Änderung sehen, die Sie vorgenommen haben. Aber im Allgemeinen ist es immer eine schlechte Idee, '$ (shell ...)' in einem Rezept zu verwenden. Es ist bereits verwirrend genug, dass es einige Dinge gibt, die von make und einige von der Shell ausgewertet werden ... das Hinzufügen einer neuen Ebene, die von make ausgewertet wird und die Shell, bevor der Rest von der Shell ausgewertet wird, ist nur Wahnsinn. – MadScientist