Udostępnij za pośrednictwem


Określanie niestandardowych narzędzi kompilacji

Niestandardowe narzędzie kompilacji udostępnia system kompilacji z informacjami potrzebnymi do kompilowania określonych plików wejściowych. Niestandardowe narzędzie kompilacji określa polecenie do uruchomienia, listę plików wejściowych, listę plików wyjściowych generowanych przez polecenie oraz opcjonalny opis narzędzia.

Aby uzyskać ogólne informacje na temat niestandardowych narzędzi kompilacji i niestandardowych kroków kompilacji, zobacz Opis niestandardowych kroków kompilacji i zdarzeń kompilacji.

Aby określić niestandardowe narzędzie kompilacji

  1. Otwórz okno dialogowe Strony właściwości projektu. Aby uzyskać więcej informacji, zobacz Set C++ compiler and build properties in Visual Studio (Ustawianie właściwości kompilatora języka C++ i kompilacji w programie Visual Studio).

  2. Wybierz pozycję Właściwości konfiguracji, aby włączyć pole Konfiguracja . W polu Konfiguracja wybierz konfigurację, dla której chcesz określić niestandardowe narzędzie kompilacji.

  3. W Eksplorator rozwiązań wybierz plik wejściowy niestandardowego narzędzia kompilacji.

    Jeśli folder Niestandardowe narzędzie kompilacji nie jest wyświetlany, rozszerzenie pliku wybranego pliku jest skojarzone z narzędziem domyślnym. Na przykład domyślnym narzędziem dla plików .c i .cpp jest kompilator. Aby zastąpić domyślne ustawienie narzędzia, w węźle Właściwości konfiguracji w folderze Ogólne we właściwości Typ elementu wybierz pozycję Niestandardowe narzędzie kompilacji. Wybierz pozycję Zastosuj, a zostanie wyświetlony węzeł Niestandardowe narzędzie kompilacji.

  4. W węźle Niestandardowe narzędzie kompilacji w folderze Ogólne określ właściwości skojarzone z niestandardowym narzędziem kompilacji:

    • W obszarze Dodatkowe zależności określ dodatkowe pliki poza pliki, dla których definiowane jest niestandardowe narzędzie kompilacji (plik skojarzony z niestandardowym narzędziem kompilacji jest niejawnie uważany za dane wejściowe narzędzia). Posiadanie dodatkowych plików wejściowych nie jest wymagane w przypadku niestandardowego narzędzia kompilacji. Jeśli masz więcej niż jedno dodatkowe dane wejściowe, oddziel je średnikami.

      Jeśli data pliku dodatkowych zależności jest późniejsza niż plik wejściowy, zostanie uruchomione niestandardowe narzędzie kompilacji. Jeśli wszystkie pliki dodatkowe zależności są starsze niż plik wejściowy, a plik wejściowy jest starszy niż plik właściwości Outputs, niestandardowe narzędzie kompilacji nie jest uruchamiane.

      Załóżmy na przykład, że masz niestandardowe narzędzie kompilacji, które pobiera plik MyInput.x jako dane wejściowe i generuje MyInput.cpp, oraz że plik nagłówkowy MyInput.x zawiera plik nagłówka MyHeader.h. Możesz określić myHeader.h jako zależność wejściową do myInput.x, a system kompilacji skompiluje MyInput.cpp, gdy jest nieaktualny w odniesieniu do MyInput.x lub MyHeader.h.

      Zależności wejściowe mogą również zapewnić, że niestandardowe narzędzia kompilacji działają w kolejności, w której są potrzebne. W poprzednim przykładzie załóżmy, że myHeader.h jest w rzeczywistości danymi wyjściowymi niestandardowego narzędzia kompilacji. Ponieważ MyHeader.h jest zależnością myInput.x, system kompilacji najpierw skompiluje plik Myheader.h przed uruchomieniem niestandardowego narzędzia kompilacji w witrynie MyInput.x.

    • W wierszu polecenia określ polecenie tak, jakby zostało określone w wierszu polecenia. Określ prawidłowe polecenie lub plik wsadowy oraz wszystkie wymagane pliki wejściowe lub wyjściowe. Określ wywołanie polecenia wsadowego przed nazwą pliku wsadowego, aby zagwarantować wykonanie wszystkich kolejnych poleceń.

      Wiele plików wejściowych i wyjściowych można określić symbolicznie za pomocą makr MSBuild. Aby uzyskać informacje na temat określania lokalizacji plików lub nazw zestawów plików, zobacz Typowe makra dla poleceń i właściwości kompilacji.

      Ponieważ znak "%" jest zarezerwowany przez program MSBuild, jeśli określisz zmienną środowiskową, zastąp każdy % znak ucieczki znakiem ucieczki %25 szesnastkowym. Na przykład zastąp ciąg %WINDIR% %25WINDIR%25. Program MSBuild zastępuje każdą sekwencję %25 znakiem % przed uzyskaniem dostępu do zmiennej środowiskowej.

    • W polu Opis wprowadź opisowy komunikat dotyczący tego niestandardowego narzędzia kompilacji. Komunikat zostanie wyświetlony w oknie Dane wyjściowe , gdy system kompilacji przetwarza to narzędzie.

    • W obszarze Dane wyjściowe określ nazwę pliku wyjściowego. Jest to wymagany wpis; bez wartości dla tej właściwości niestandardowe narzędzie kompilacji nie zostanie uruchomione. Jeśli niestandardowe narzędzie kompilacji ma więcej niż jedno dane wyjściowe, należy oddzielić nazwy plików średnikami.

      Nazwa pliku wyjściowego powinna być taka sama jak określona we właściwości Wiersza polecenia. System kompilacji projektu wyszuka plik i sprawdzi jego datę. Jeśli plik wyjściowy jest starszy niż plik wejściowy lub plik wyjściowy nie zostanie znaleziony, zostanie uruchomione niestandardowe narzędzie kompilacji. Jeśli wszystkie pliki dodatkowe zależności są starsze niż plik wejściowy, a plik wejściowy jest starszy niż plik określony we właściwości Outputs, niestandardowe narzędzie kompilacji nie jest uruchamiane.

Jeśli chcesz, aby system kompilacji działał na pliku wyjściowym wygenerowanym przez niestandardowe narzędzie kompilacji, musisz ręcznie dodać go do projektu. Niestandardowe narzędzie kompilacji zaktualizuje plik podczas kompilacji.

Przykład

Załóżmy, że chcesz dołączyć plik o nazwie parser.l w projekcie. Na ścieżce wykonywalnej masz analizator leksyktyczny, lexer.exe. Chcesz użyć go do przetwarzania parser.l, aby utworzyć plik .c, który ma taką samą nazwę bazową (parser.c).

Najpierw dodaj plik parser.l i parser.c do projektu. Jeśli pliki jeszcze nie istnieją, dodaj odwołanie do plików. Utwórz niestandardowe narzędzie kompilacji dla pliku parser.l i wprowadź następujące polecenie we właściwości Commands :

lexer %(FullPath) .%(Nazwa pliku).c

To polecenie uruchamia analizator leksykalny w pliku parser.l i outputs parser.c do katalogu projektu.

We właściwości Outputs wprowadź następujące wartości:

.%(Nazwa pliku).c

Podczas kompilowania projektu system kompilacji porównuje znaczniki czasu parser.l i parser.c. Jeśli plik parser.l jest ostatnio używany lub jeśli plik parser.c nie istnieje, system kompilacji uruchamia wartość właściwości Wiersza polecenia, aby zapewnić aktualność pliku parser.c. Ponieważ plik parser.c został również dodany do projektu, system kompilacji kompiluje plik parser.c.

Zobacz też

Typowe makra dla właściwości i poleceń kompilacji
Rozwiązywanie problemów z dostosowaniami kompilacji