Festlegen benutzerdefinierter Buildschritte

Aktualisiert: November 2007

Mit einem benutzerdefinierten Buildschritt werden dem Buildsystem die Informationen übermittelt, die es benötigt, um Ausgabedateien aus einer Eingabedatei zu erstellen. Ein benutzerdefinierter Buildschritt wird an die jeweilige Eingabedatei angefügt. Er enthält die auszuführenden Befehle, eine Liste der von diesen Befehlen generierten Ausgabedateien sowie (optional) eine Beschreibung des Befehls.

Allgemeine Informationen zu benutzerdefinierten Buildschritten finden Sie unter Grundlagen benutzerdefinierter Buildschritte und Buildereignisse.

So legen Sie einen benutzerdefinierten Buildschritt fest

  1. Öffnen Sie das Dialogfeld Eigenschaftenseiten des Projekts. Ausführliche Informationen finden Sie unter Festlegen von Visual C++-Projekteigenschaften.

  2. Wählen Sie im Feld Konfiguration die Konfiguration aus, für die Sie einen benutzerdefinierten Buildschritt festlegen möchten.

  3. Wählen Sie im Projektmappen-Explorer die Eingabedatei für den benutzerdefinierten Buildschritt aus.

    Wenn der Ordner Benutzerdef. Buildschritt nicht angezeigt wird, ist die ausgewählte Datei mit einem Standardschritt verknüpft. C- und CPP-Dateien verfügen beispielsweise über einen Standardschritt zum Aufrufen des Compilers. Um eine Standardeinstellung zu überschreiben, ändern Sie die Eigenschaft Tool im Ordner Konfigurationseinstellungen.

  4. Legen Sie die Eigenschaften für den benutzerdefinierten Buildschritt fest:

    • Geben Sie unter Zusätzliche Abhängigkeiten zusätzlich zu der Datei, für die der benutzerdefinierte Buildschritt definiert wurde, weitere Dateien an (die mit dem benutzerdefinierten Buildschritt verknüpfte Datei wird implizit als Eingabe für den Schritt angesehen). Zusätzliche Eingabedateien sind für einen benutzerdefinierten Buildschritt nicht unbedingt erforderlich. Wenn Sie über mehrere zusätzliche Eingaben verfügen, trennen Sie diese durch ein Semikolon.

      Wenn das Datum einer Datei unter Zusätzliche Abhängigkeiten nach dem Datum der Eingabedatei liegt, wird die benutzerdefinierte Buildregel ausgeführt. Wenn alle Dateien unter Zusätzliche Abhängigkeiten älter als die Eingabedatei sind, und die Eingabedatei älter als die Datei unter Ausgaben ist, wird der benutzerdefinierte Buildschritt nicht ausgeführt.

      Angenommen, Sie verfügen über einen benutzerdefinierten Buildschritt, der MyInput.x als Eingabe verwendet und MyInput.cpp generiert. Zusätzlich schließt MyInput.x die Headerdatei MyHeader.h ein. Sie können MyHeader.h gegenüber MyInput.x als Eingabeabhängigkeit festlegen; in diesem Fall wird die Datei MyInput.cpp vom Buildsystem erstellt, wenn sie im Vergleich zu MyInput.x oder MyHeader.h älter ist.

      Durch Eingabeabhängigkeiten wird außerdem sichergestellt, dass benutzerdefinierte Buildschritte in der gewünschten Reihenfolge ausgeführt werden. Angenommen, bei der Datei MyHeader.h im vorangehenden Beispiel handelt es sich tatsächlich um die Ausgabe eines benutzerdefinierten Buildschritts. Da MyHeader.h eine Abhängigkeit von MyInput.x ist, erstellt das Buildsystem zuerst die Datei Myheader.h, bevor es den benutzerdefinierten Buildschritt für MyInput.x ausführt.

    • Geben Sie in der Befehlszeile die Syntax der benutzerdefinierten Buildregel ein. Diese Syntax kann jeden in der Befehlszeile oder in einer BAT-Datei zulässigen Befehl enthalten. Sie können auch Makros für Buildbefehle und Buildeigenschaften verwenden, um den Speicherort von Dateien festzulegen oder den tatsächlichen Namen der Eingabedatei abzurufen, falls mehrere Elemente ausgewählt wurden. Dem Namen einer Batchdatei sollte call vorangestellt werden, damit alle folgenden Befehle ausgeführt werden.

    • Geben Sie unter Beschreibung eine Beschreibung des benutzerdefinierten Buildschritts ein. Diese wird im Ausgabefenster angezeigt, wenn dieser Schritt vom Buildsystem verarbeitet wird.

    • Geben Sie unter Ausgaben den Namen der Ausgabedatei an. Dieser Eintrag ist erforderlich, da ein benutzerdefinierter Buildschritt ohne einen Wert für diese Eigenschaft nicht ausgeführt werden kann. Wenn ein benutzerdefinierter Buildschritt über mehrere Ausgaben verfügt, werden die Dateinamen durch ein Semikolon getrennt.

      Der Name der Ausgabedatei sollte der Eingabe für die Eigenschaft Befehlszeile entsprechen. Das Projektbuildsystem sucht nach der Datei und überprüft ihr Datum. Wenn die Datei neuer als die Eingabedatei ist bzw. nicht gefunden wird, wird der benutzerdefinierte Buildschritt ausgeführt. Wenn alle Dateien unter Zusätzliche Abhängigkeiten älter als die Eingabedatei sind und die Eingabedatei älter als die Datei Ausgaben ist, wird der benutzerdefinierte Buildschritt nicht ausgeführt.

Wenn das Buildsystem eine durch den benutzerdefinierten Buildschritt generierte Ausgabedatei verarbeiten soll, müssen Sie diese dem Projekt manuell hinzufügen. Die Datei wird während des Buildvorgangs durch den benutzerdefinierten Buildschritt aktualisiert.

Beispiel

Stellen Sie sich vor, Sie möchten eine Datei mit dem Namen parser.l in Ihr Projekt aufnehmen. Diese Datei soll von einer lexikalischen Analyse verarbeitet werden, um eine C-Datei mit demselben Basisnamen (parser.c) zu erstellen.

Zuerst fügen Sie dem Projekt parser.l und parser.c hinzu. Wenn die Dateien noch nicht vorhanden sind, fügen Sie einfach einen Verweis auf die Dateien hinzu. Sie erstellen einen benutzerdefinierten Buildschritt für parser.l und geben Folgendes in der Eigenschaft Befehle ein:

lexer $(InputPath) .\$(InputName).c

Durch diesen Befehl wird die lexikalische Analyse für parser.l ausgeführt und parser.c in das Projektverzeichnis ausgegeben.

Geben Sie für die Eigenschaft Ausgaben Folgendes ein:

.\$(InputName).c

Wenn Sie das Projekt erstellen, vergleicht das Buildsystem die Timestamps von parser.l und parser.c. Wenn parser.l einen aktuelleren Timestamp hat oder parser.c nicht vorhanden ist, wird die Eigenschaft Befehl vom Buildsystem ausgeführt, um parser.c zu aktualisieren. Da parser.c dem Projekt ebenfalls hinzugefügt wurde, fährt das Buildsystem anschließend mit der Kompilierung von parser.c fort.

Siehe auch

Referenz

Problembehandlung bei benutzerdefinierten Buildschritten und Buildereignissen

Weitere Ressourcen

Makros für Buildbefehle und -eigenschaften