Delen via


Aangepaste buildhulpprogramma's opgeven

Een aangepast build-hulpprogramma biedt het buildsysteem de informatie die nodig is om specifieke invoerbestanden te bouwen. Een aangepast build-hulpprogramma specificeert een opdracht die moet worden uitgevoerd, een lijst met invoerbestanden, een lijst met uitvoerbestanden die door de opdracht worden gegenereerd en een optionele beschrijving van het hulpprogramma.

Voor algemene informatie over aangepaste buildhulpprogramma's en aangepaste buildstappen, zie Informatie over aangepaste buildstappen en build-gebeurtenissen.

Een aangepast build-tool specificeren

  1. Open het dialoogvenster eigenschappenpagina's van het project. Zie C++-compiler instellen en eigenschappen bouwen in Visual Studiovoor meer informatie.

  2. Kies Configuratie-eigenschappen om het vak Configuratie in te schakelen. Selecteer in het vak Configuratie de configuratie waarvoor u een aangepast build-hulpprogramma wilt opgeven.

  3. Selecteer in Solution Explorer het invoerbestand voor het aangepaste buildhulpprogramma.

    Als de map Custom Build Tool niet wordt weergegeven, is de bestandsextensie van het bestand dat u hebt geselecteerd gekoppeld aan een standaardhulpprogramma. Het standaardhulpprogramma voor .c- en .cpp-bestanden is bijvoorbeeld de compiler. Als u een standaardinstelling voor hulpprogramma's wilt overschrijven, kiest u in het knooppunt Configuratie-eigenschappen in de map Algemeen in de eigenschap Itemtypede optie Aangepast buildprogramma. Kies Toepassen en het knooppunt Aangepast buildhulpprogramma wordt weergegeven.

  4. Geef in het knooppunt Aangepast buildhulpprogramma in de map Algemeen de eigenschappen op die zijn gekoppeld aan het aangepaste buildhulpprogramma:

    • Geef in Aanvullende afhankelijkheden eventuele extra bestanden op buiten het bestand waarvoor het aangepaste buildhulpprogramma wordt gedefinieerd (het bestand dat is gekoppeld aan het aangepaste build-hulpprogramma wordt impliciet beschouwd als invoer voor het hulpprogramma). Het hebben van extra invoerbestanden is geen vereiste voor een aangepast build-hulpprogramma. Als u meer dan één extra invoer hebt, scheidt u deze met puntkomma's.

      Als de datum van een bestand met aanvullende afhankelijkheden later is dan het invoerbestand, wordt het aangepaste buildhulpprogramma uitgevoerd. Als alle aanvullende afhankelijkhedenbestanden ouder zijn dan het invoerbestand en het invoerbestand ouder is dan het eigenschapsbestand Outputs , wordt het aangepaste buildhulpprogramma niet uitgevoerd.

      Stel dat u een aangepast build-hulpprogramma hebt dat MyInput.x als invoer gebruikt en MyInput.cpp genereert en dat MyInput.x een headerbestand bevat, MyHeader.h. U kunt MyHeader.h opgeven als invoerafhankelijkheid voor MyInput.x en het buildsysteem bouwt MyInput.cpp wanneer deze verouderd is met betrekking tot MyInput.x of MyHeader.h.

      Invoerafhankelijkheden kunnen er ook voor zorgen dat uw aangepaste buildhulpprogramma's worden uitgevoerd in de volgorde waarin u ze nodig hebt. Stel dat MyHeader.h in het voorgaande voorbeeld de uitvoer is van een aangepast build-hulpprogramma. Omdat MyHeader.h een afhankelijkheid is van MyInput.x, bouwt het buildsysteem eerst Myheader.h voordat het aangepaste buildhulpprogramma op MyInput.x wordt uitgevoerd.

    • Geef in de opdrachtregel een opdracht op alsof u deze opgeeft bij de opdrachtprompt. Geef een geldige opdracht of batchbestand en eventuele vereiste invoer- of uitvoerbestanden op. Geef de aanroepbatchopdracht op vóór de naam van een batchbestand om te garanderen dat alle volgende opdrachten worden uitgevoerd.

      Meerdere invoer- en uitvoerbestanden kunnen symbolisch worden opgegeven met MSBuild-macro's. Zie Algemene macro's voor build-opdrachten en eigenschappen voor informatie over het opgeven van de locatie van bestanden of de namen van sets bestanden.

      Omdat het teken '%' is gereserveerd door MSBuild, vervangt u elk escape-teken door de % hexadecimale escapereeks als u een omgevingsvariabele opgeeft. Vervang bijvoorbeeld %WINDIR% door %25WINDIR%25. MSBuild vervangt elke %25 reeks door het % teken voordat deze toegang heeft tot de omgevingsvariabele.

    • Voer in Beschrijving een beschrijvend bericht in over dit aangepaste build-hulpprogramma. Het bericht wordt afgedrukt naar het uitvoervenster wanneer het buildsysteem dit hulpprogramma verwerkt.

    • Geef in Uitvoer de naam van het uitvoerbestand op. Dit is een vereiste vermelding; zonder een waarde voor deze eigenschap wordt het aangepaste buildhulpprogramma niet uitgevoerd. Als een aangepast build-hulpprogramma meer dan één uitvoer heeft, scheidt u bestandsnamen met een puntkomma.

      De naam van het uitvoerbestand moet hetzelfde zijn als het is opgegeven in de opdrachtregeleigenschap . Het projectbuildsysteem zoekt naar het bestand en controleert de datum. Als het uitvoerbestand ouder is dan het invoerbestand of als het uitvoerbestand niet wordt gevonden, wordt het aangepaste buildhulpprogramma uitgevoerd. Als alle aanvullende afhankelijkheden-bestanden ouder zijn dan het invoerbestand en het invoerbestand ouder is dan het bestand dat is opgegeven in de eigenschap Outputs , wordt het aangepaste buildhulpprogramma niet uitgevoerd.

Als u wilt dat het buildsysteem werkt op een uitvoerbestand dat is gegenereerd door het aangepaste buildhulpprogramma, moet u dit handmatig toevoegen aan het project. Het aangepaste buildhulpprogramma werkt het bestand bij tijdens de build.

Voorbeeld

Stel dat u een bestand met de naam parser.l in uw project wilt opnemen. U hebt een lexical analyzer, lexer.exe, op het uitvoerbare pad. U wilt het gebruiken om parser.l te verwerken voor het produceren van een .c-bestand met dezelfde basisnaam (parser.c).

Voeg eerst parser.l en parser.c toe aan het project. Als de bestanden nog niet bestaan, voegt u een verwijzing naar de bestanden toe. Maak een aangepast build-hulpprogramma voor parser.l en voer het volgende in de eigenschap Opdrachten in:

lexer %(FullPath) .%(bestandsnaam).c

Met deze opdracht wordt de lexical analyzer uitgevoerd op parser.l en wordt parser.c naar de projectmap weggeschreven.

Voer in de eigenschap Outputs het volgende in:

.%(bestandsnaam).c

Wanneer u het project bouwt, vergelijkt het buildsysteem de tijdstempels van parser.l en parser.c. Als parser.l recenter is of als parser.c niet bestaat, voert het buildsysteem de waarde van de eigenschap Opdrachtregel uit om parser.c up-to-date te brengen. Omdat parser.c ook aan het project is toegevoegd, compileert het buildsysteem vervolgens parser.c.

Zie ook

Algemene macro's voor bouwopdrachten en eigenschappen
Problemen met buildaanpassingen oplossen