Ich versuche ein nmake-Makefile einzurichten, um unsere Balsamiq-Mockup-Dateien automatisch in PNG-Dateien zu exportieren, aber ich fürchte, ich kann nicht Kopf oder Zahl davon machen dafür, ohne explizit alle Dateien aufzulisten, die ich exportieren möchte.Verwendung von nmake mit Wildcards im Makefile
This page Details der Befehlszeilensyntax für den Export der Dateien, und this page enthält ein Beispiel, das aussieht, als ob es eine generische Regel für .obj-Dateien zu .exe-Dateien enthält.
Das Make-Datei habe ich versucht, so sieht weit wie folgt aus:
.bmml.png:
"C:\Program Files\Balsamiq Mockups\Balsamiq Mockups.exe" export $< [email protected]
Aber das funktioniert nicht.
Wenn ich einfach Nmake (mit einigen veralteten png-Dateien) laufen, NMake nur tut dies:
[C:\Temp] :nmake
Microsoft (R) Program Maintenance Utility Version 9.00.30729.01
Copyright (C) Microsoft Corporation. All rights reserved.
[C:\Temp] :
Wenn ich es frage eine bestimmte Datei zu erstellen, tut es dies:
[C:\Temp] :nmake "TestFile.png"
Microsoft (R) Program Maintenance Utility Version 9.00.30729.01
Copyright (C) Microsoft Corporation. All rights reserved.
NMAKE : fatal error U1073: don't know how to make '"TestFile.png"'
Stop.
[C:\Temp] :
Irgendwelche Nymphegurus da draußen, die mich richtig stellen können?
Ein Beispiel Make-Datei, die einfach DAT-Dateien aus TXT-Dateien durch Kopieren macht, zu experimentieren, sieht wie folgt aus:
.txt.dat:
copy $< [email protected]
dies tut nichts als gut, so klar verstehe ich nicht, wie Solche generischen Regeln funktionieren. Muss ich ein Ziel oberhalb angeben, das irgendwie die gewünschten Dateien auflistet?
bearbeiten: Als Antwort auf neue Antwort:
Dieses Make-Datei:
{}.txt{}.dat:
copy $** [email protected]
mit dieser Datei (test.dat)
1
2
3
und diesen Befehl ein:
NMAKE test.txt
Erzeugt diese Fehlermeldung:
[C:\] :nmake test.txt
Microsoft (R) Program Maintenance Utility Version 9.00.30729.01
Copyright (C) Microsoft Corporation. All rights reserved.
NMAKE : fatal error U1073: don't know how to make 'test.txt'
Stop.
Das ist sehr gut. Das einzige ist, dass ich finde, dass es jedes Mal neu erstellt wird, selbst wenn das Ziel auf dem neuesten Stand ist. Wie würde man es auch überspringen, wenn das Ziel neuer ist als die Quelle? – CashCow
@CashCow Ich sehe das Problem nicht. In Erics Beispiel existiert das Ziel nie! Es echote nur etwas Text, es erzeugt nie ein Ziel. Wenn Sie eine Regel 'copy $ <$ @' hinzufügen, werden auch die Ziele erstellt. In diesem Fall werden die aktuellen Ziele nicht unnötigerweise neu erstellt. –
Ich brauchte eine Weile, um das herauszufinden. Wenn Ihr Makefile nicht den Namen makefile hat, müssen Sie auch den rekursiven Aufruf '-f' verwenden. –