Frage

Ich versuche, eine Nmake Make-Datei einzurichten unsere Balsamiq Mockup-Dateien in PNG-Dateien automatisch zu exportieren, aber ich habe Angst, daß ich nicht Köpfe noch Schwänze machen kann, wie zu tun, um eine allgemeine Regel zu machen, ohne explizit die Auflistung alle Dateien, die ich exportiert werden sollen.

Diese Seite die Befehlszeilensyntax zu den Dateien zu exportieren, und diese Seite enthält ein Beispiel, das aussieht wie es eine allgemeine Regel für die OBJ-Dateien enthält .exe-Dateien.

Das Make-Datei habe ich versucht, so weit wie folgt aussieht:

.bmml.png:
    "C:\Program Files\Balsamiq Mockups\Balsamiq Mockups.exe" export $< $@

Aber das funktioniert nicht.

Wenn ich einfach Nmake (mit einigen veralteten png-Dateien) laufen, NMake genau dies tut:

[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] :

Jede Nmake Gurus gibt, die mich gerade eingestellt?

Ein Beispiel Make-Datei, die einfach DAT-Dateien aus TXT-Dateien durch Kopieren macht, zu experimentieren, wie folgt aussieht:

.txt.dat:
    copy $< $@

das tut nichts als gut, so klar bin ich nicht verstehen, wie solche allgemeinen Regeln arbeiten. Benötige ich ein Ziel angeben, über das irgendwie die Dateien auflistet ich will?


Bearbeiten : Als Reaktion auf neue Antwort:

Diese Make-Datei:

{}.txt{}.dat:
    copy $** $@

mit dieser Datei (test.dat)

1
2
3

und dieser Befehl:

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.
War es hilfreich?

Lösung

NMAKE Musterregeln sind viel wie GNU Altschule Suffixregeln machen. In Ihrem Fall, Sie hatten es fast richtig mit zu beginnen, aber Sie die .SUFFIXES Erklärung fehlten. Zum Beispiel:

.SUFFIXES: .bmml .png
.bmml.png:
    @echo Building $@ from $<

Ich denke, dies ist allerdings nur ein Teil Ihrer Lösung ist, weil Sie auch explizit vermeiden erwähnt wollen Auflistung aller Dateien konvertiert werden. Leider weiß ich nicht von einer sehr sauberen Art und Weise, in NMAKE zu tun, da es nur Platzhalter in Abhängigkeit Listen erweitert, und was Sie wirklich in Ihrer Abhängigkeitsliste wollen, ist nicht die Liste der Dateien, die bereits vorhanden ist (die * .bmml Dateien), aber die Liste der Dateien, die aus diesen Dateien (die * .png-Dateien) erstellt werden. Trotzdem denke ich, Sie Ihr Ziel mit einem rekursiven NMAKE Aufruf wie dies erreichen können:

all: *.bmml
    $(MAKE) $(**:.bmml=.png)

Hier NMAKE wird *.bmml in der prereq Liste für all in die Liste der .bmml Dateien in dem Verzeichnis, erweitern und dann wird es eine neue NMAKE-Instanz starten, um die Ziele spezifizieren wie die Liste der Dateien mit allen Instanzen zu bauen .bmml durch .png ersetzt. So setzen sie alle zusammen:

.SUFFIXES: .bmml .png
all: *.bmml
    @echo Converting $(**) to .png...
    @$(MAKE) $(**:.bmml=.png)

.bmml.png:
    @echo Building $@ from $<

Wenn ich Dateien erstellen Test1.bmml und Test2.bmml und dann diese Make-Datei ausführen, bekomme ich die folgende Ausgabe:

Converting Test1.bmml Test2.bmml to .png...
Building Test1.png from Test1.bmml
Building Test2.png from Test2.bmml

Natürlich, wenn Sie sehr viele dieser .bmml Dateien haben, können Sie in Konflikt geraten Befehlszeilenlänge Einschränkungen laufen, so dass für aufpassen. In diesem Fall empfehle ich entweder explizit die Quelldateien Auflistung oder ein fähiges Make-Tool, wie GNU macht (die für Windows in einer Vielzahl von Formen verfügbar ist).

Andere Tipps

Wird diese Arbeit für Sie? Setzen Sie dieses in MAKE:.

export : *.bmml
    "C:\Program Files\Balsamiq Mockups\Balsamiq Mockups.exe" export $** $(**B).png

Dann laufen:

nmake /A

Ich habe Balsamiq nicht, also kann ich das nicht testen, aber in meinem Fall, wenn ich die folgenden MAKE habe.

export : *.txt
    copy $** $(**B).dat

und führt nmake /A in einem Ordner mit MYFILE.TXT, wird es myfile.dat erstellen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top