47 votes

Arrêtez-vous automatiquement la compilation de Visual C ++ 2008 à la première erreur de compilation?

Je sais que je peux compiler des sources des fichiers, mais parfois-dire, lors de l'édition d'un fichier d'en-tête utilisé par de nombreux .cpp fichiers -- plusieurs fichiers source doivent être recompilées. C'est ce Build est pour.

Comportement par défaut de la "construction" de la commande en VC9 (Visual C++ 2008) est de tenter de compiler tous les fichiers qui en ont besoin. Parfois ce seulement les résultats dans beaucoup de échec de la compile. J'ai l'habitude de simplement observer les erreurs et appuyez sur ctrl-pause pour arrêter le construire manuellement.

Est-il un moyen de le configurer de telle la construction s'arrête à la première erreur de compilation (pas l'échec du premier projet de construction) automatiquement?

27voto

Eric Muyser Points 1276

Je suis venu avec un meilleur macro gars. Il s’arrête immédiatement après la première erreur / s (dès que la fenêtre de construction est mise à jour).

Visual Studio -> Outils -> Macros -> Macro IDE ... (ou 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
 

J'espère que ça marche pour vous les gars.

17voto

jmatthias Points 2023

Cela peut être fait en ajoutant une macro qui est exécutée en réponse à l'événement OnBuildProjConfigDone.

La macro est la suivante:

 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
 

8voto

Oui, cela fonctionne bien sur 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
 

3voto

RKG Points 75

Je sais que la question a été pour VS 2008, mais je suis tombé lors de la recherche pour la même réponse pour VS 2012. Depuis les macros ne sont plus pris en charge en 2012, les macro-solutions ne fonctionne plus.

Vous pouvez télécharger une extension qui fonctionne apparemment dans VS 2010 et 2012 ici. Je peux confirmer que cela fonctionne bien dans VS 2012.

Le lien d'origine de l'extension a été accordée dans la présente réponse.

1voto

Martin Beckett Points 60406

Il y a ce post - vous ne savez pas s'il arrête la construction à la première erreur ou au premier projet ayant échoué dans une solution.

Ctrl-break l'arrêtera aussi manuellement.

Maintenant, s’il y avait un moyen de l’empêcher de dépenser 10 minutes pour reconstruire intelisense après l’échec d’une compilation!

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X