Automatycznie zatrzymać Visual C++ 2008 build przy pierwszym błędzie kompilacji?

Wiem, że mogę skompilować pojedyncze pliki źródłowe, ale czasami -- powiedzmy, podczas edycji pliku nagłówkowego używanego przez wiele plików .cpp -- wiele plików źródłowych wymaga rekompilacji. Po to jest Build.

Domyślnym zachowaniem polecenia "Build" w VC9 (Visual C++ 2008) jest próba skompilowania wszystkich plików, które tego potrzebują. Czasami skutkuje to po prostu wieloma nieudanymi kompilacjami. Zwykle po prostu obserwuję błędy i wciskam ctrl-break, aby ręcznie zatrzymać kompilację.

Czy jest sposób na skonfiguruj go tak, że kompilacja zatrzymuje się na pierwszym błędzie kompilacji (nie pierwszym nieudanym kompilacji projektu) automatycznie?

Author: jwfearn, 2008-09-25

6 answers

Wymyśliłem lepsze makro. Zatrzymuje się natychmiast po pierwszym błędzie/s (zaraz po zaktualizowaniu okna kompilacji).

Visual Studio - > Narzędzia - > Makra - > Macro IDE... (lub ALT + F11)

Private Sub OutputWindowEvents_OnPaneUpdated(ByVal pPane As OutputWindowPane) Handles OutputWindowEvents.PaneUpdated
    If Not (pPane.Name = "Build") Then Exit Sub

    pPane.TextDocument.Selection.SelectAll()
    Dim Context As String = pPane.TextDocument.Selection.Text
    pPane.TextDocument.Selection.EndOfDocument()

    Dim found As Integer = Context.IndexOf(": error ")

    If found > 0 Then
        DTE.ExecuteCommand("Build.Cancel")
    End If

End Sub 
Mam nadzieję, że wam się uda.
 26
Author: Eric Muyser,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-07-06 03:03:53

Można to zrobić dodając makro, które jest uruchamiane w odpowiedzi na zdarzenie OnBuildProjConfigDone.

Makro wygląda następująco:

Private Sub BuildEvents_OnBuildProjConfigDone(ByVal Project As String, ByVal ProjectConfig As String, ByVal Platform As String, ByVal SolutionConfig As String, ByVal Success As Boolean) Handles BuildEvents.OnBuildProjConfigDone

  If Success = False Then
    DTE.ExecuteCommand("Build.Cancel")
  End If

End Sub
 17
Author: jmatthias,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-11 22:30:57

Tak, to działa dobrze na MSVC 2005-2010:

Public Module EnvironmentEvents
  Private Sub OutputWindowEvents_OnPaneUpdated(ByVal pPane As OutputWindowPane) Handles OutputWindowEvents.PaneUpdated
    If Not (pPane.Name = "Build") Then Exit Sub

    Dim foundError As Boolean = pPane.TextDocument.StartPoint.CreateEditPoint().FindPattern(": error")
    Dim foundFatal As Boolean = pPane.TextDocument.StartPoint.CreateEditPoint().FindPattern(": fatal error")

    If foundError Or foundFatal Then
      DTE.ExecuteCommand("Build.Cancel")
    End If
  End Sub
End Module
 9
Author: Anders Glent Buch,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-01-21 10:20:39

Wiem, że pytanie dotyczyło VS 2008, ale natknąłem się na nie, szukając tej samej odpowiedzi dla VS 2012. Ponieważ makra nie są już obsługiwane w 2012 roku, rozwiązania makr nie będą już działać.

Możesz pobrać rozszerzenie, które najwyraźniej działa w VS 2010 i 2012 tutaj . Mogę potwierdzić, że działa dobrze w VS 2012.

Oryginalny link do rozszerzenia został podany w tej odpowiedzi .

 3
Author: RKG,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:19:26

Jest Ten post - Nie wiem, czy zatrzymuje kompilację przy pierwszym błędzie, czy przy pierwszym nieudanym projekcie w rozwiązaniu.

Ctrl-break zatrzyma go również ręcznie.

Teraz, jeśli był jakiś sposób, aby zatrzymać to wydatki 10mins odbudowa intelisense po build failed!

 1
Author: Martin Beckett,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-02-28 13:14:15

Możesz również pobrać to rozszerzenie , wydaje się działać dla każdej wersji Visual Studio

 1
Author: Shocker,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-01 09:55:55