2011-10-19 6 views
7

Generuję wyjściowy preprocesor (.i) z Visual Studio, ale także chcę zrobić rzeczywistą kompilację. Czy istnieje kombinacja flag, które będą wyprowadzać plik .i bez zatrzymywania kompilatora od kontynuacji kompilacji?Jak wypisać przetworzony kod i skompilować go (Visual Studio)

To jest obecnie tylko C++, ale prawdopodobnie będzie chciał użyć tego z CUDA później, więc preferuj odpowiedzi, które działają w Visual Studio, zamiast wymagać linii poleceń (chyba że działa również dla CUDA).

Chodzi o to, aby zaoszczędzić czas potrzebny na wykonanie projektu-> Właściwości-> Konfig. Rekwizytów-> C/C++ -> Preprocesor-> Wygeneruj wstępnie przetworzony plik Tak/Nie plus Przebuduj. Szczególnie jest dla mnie kłopotliwe, że preprocesor musi działać dwukrotnie, więc rozwiązanie, które w jakiś sposób generuje plik .i w części 1, a następnie kompiluje ten plik w części 2, byłoby w porządku.

Dokładna wersja Visual Studio Używam jest VS 2008 Express

+0

** VS 2088 Express ** fajne! –

+1

@ K-ballo: VS2088 jest bardzo fajny. Niestety jest to bardzo drogie, ponieważ trzeba zdobyć maszynę czasu, aby uzyskać kopię. –

+0

@ K-ballo dzięki – Raffles

Odpowiedz

2

Możesz dodać krok zwyczaj budowania lub nowy cel zrzucić Preprocesuj po kodzie zbudowany jest z definicji dumpingowych wyjście preprocesor jest co jest zbudowany.

+0

Tak czy inaczej, kompilacja musi przeczytać pliki dwa razy? Ale to jest powolna część! –

+0

Niestandardowy cel może cpp zbudować * .i tak długo, jak długo zależy od celu, który zrzuca preprocesor. – rerun

+0

* miga * Whoa ... To może zadziałać i ewentualnie wygenerować bardziej efektywny plik ze względu na linker wiedząc więcej ... –

0

Można utworzyć niestandardową konfigurację kompilacji, która wykonuje wstępne przetwarzanie, a następnie zdefiniować kompilację wsadową, która tworzy wstępnie przetworzoną wersję, a następnie faktyczną wersję skompilowaną/połączoną.

+0

OK, świetnie to brzmi idealnie. Przez "niestandardową konfigurację kompilacji" rozumiesz "niestandardowy krok kompilacji", o którym wspominał poprzedni użytkownik? Jeśli tak, to jest tutaj niezła progresja :-) – Raffles

0

Przełącznik/P Przykładzie Cl/C sample.c

Powyższy wygeneruje plik .I o tej samej nazwie (sample.I). Teraz, aby skompilować plik .I, po prostu zmień nazwę pliku .I na .C, następnie wykonaj cl/c, aby skompilować i wygenerować plik obiektowy.