Jak sprawić, by kompilacja programu Visual Studio była bardzo szczegółowa?


99

Muszę zdobyć każdą flagę, każdy przełącznik używany w procesie kompilacji przez pliki binarne programu Visual Studio. Próbowałem uzyskać szczegółowe dane wyjściowe za pomocą vcbuild, ale nie mogłem.

Co muszę zrobić, aby zobaczyć wszystko, co jest wykonywane przez program Visual Studio? Nie ma potrzeby uzyskiwania danych wyjściowych w oknie kompilacji. Wszystko będzie dobrze.


Odpowiedzi:


67
  1. Otwórz okno dialogowe właściwości projektu, a następnie wybierz

    Właściwości konfiguracjiC / C ++Ogólne

  2. Zmień ustawienie Suppress Startup BannernaNo

  3. Wiersze clpoleceń zostaną wyświetlone w oknie wyjściowym.


1
Dotyczy to tylko kompilatora, a nie konsolidatora lub zasobów.
user2284570

6
W VS2017 ta `` sztuczka '' wydaje się już nie działać. Jednak budowanie w zachęcie programisty przy użyciu msbuild z nazwą pliku rozwiązania lub projektu jako argumentem cli powoduje wyświetlenie wywołania cl z jego argumentami.
Emile Vrijdags,

@EmileVrijdags Doskonale widzę clwyjście polecenia z VS2017 po wykonaniu tych kroków. Więc ta „sztuczka” działa na mnie.
nephewtom

152

Menu NarzędziaOpcjeProjekty i rozwiązaniaKompiluj i uruchamiaj → Szczegółowość danych wyjściowych kompilacji projektu programu MSBuild : Diagnostyka


2
To niczego nie zmienia. Nadal otrzymuję te same dane wyjściowe w oknie wyników.
Geo

3
U mnie działa dobrze w VC10.
abergmeier

2
@ Geo zaczyna obowiązywać po ponownym uruchomieniu programu Visual Studio.
absync

@absynce, W VS 2017 nie działa to nawet po ponownym uruchomieniu Visual Studi0 2017. Używam wersji społeczności VS 2017. Tak więc ta funkcjonalność nie wydaje się być poprawnie zaimplementowana w VS 2017.
Sunil

Działa również w VS 2019!
Prabal Kajla

65

Visual Studio 2008:

Przejdź do menu NarzędziaOpcje, a następnie Projekt i rozwiązaniaBuduj i uruchom . Masz pole kombi do szczegółowości.

Opcja kompilatora C ++ (właściwości projektu):

  • Preprocesor - Generuj wstępnie przetworzony plik, aby zobaczyć jednostkę tłumaczeniową wygenerowaną przez preprocesor
  • Zaawansowane - Pokaż dołączone - wyświetl dołączone nazwy plików na wyjściu kompilatora

1
To nie pokazuje flag kompilacji i konsolidatora, tylko nazwy plików, które są przetwarzane. Czy można zobaczyć dokładne polecenia, które są wykonywane lub jest to niemożliwe w VS?
stefanB

2
@stefanB: nie potrzebujesz do tego specjalnych flag. Wiersze poleceń dla wywołania kompilatora i konsolidatora można znaleźć w oknie dialogowym opcji lub w dzienniku kompilacji, który jest zapisywany w katalogu pośrednim.
Yakov Galka

8

Jeśli używasz programu MSBuild, możesz ustawić flagę / v: diag.


Jak uruchomić MSBuild?
Geo

uruchom wiersz poleceń programu Visual Studio (znajduje się w menu Start), a następnie wykonaj projekt programu Visual Studio z: MSBuild {ProjectName}
Joe

np. MsBuild myProject.csproj
Joe

Widzę wywołania MSBuild vcbuild, ale vcbuild nie pokazuje flag / przełączników, których używa.
Geo

Uważam, że to jest właściwa odpowiedź. Samo wyłączenie różnych banerów nadal nie wyświetla wszystkiego. W szczególności krok kompilacji zasobów był tym, czego szukałem.
Jan

5

W programie Visual Studio przejdź do projektu, kliknij go prawym przyciskiem myszy i wybierz właściwości. W Linkerze jest opcja linii poleceń. Tam masz wszystkie opcje i możesz dodać własne. Dodaj, /VERBOSEa podczas łączenia Visual Studio pokaże dużo więcej informacji.


1
Pokazuje więcej informacji, ale nie pokazuje narzędzi wywoływanych do kompilacji.
Geo

2
Visual Studio ma narzędzie do tworzenia nazw o nazwie nmake. Możesz wyeksportować swój projekt do tych plików makefile i zbudować go z konsoli DOS msdn.microsoft.com/en-us/library/txcwa2xx(VS.80).aspx . Ostatnim razem zrobiłem coś podobnego (ale użyłem CMake do wygenerowania plików makefile nmake) wszystkie polecenia zostały wydrukowane na wyświetlaczu konsoli.
javier-sanz
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.