web-dev-qa-db-ja.com

最初のコンパイルエラーでVisualC ++ 2008ビルドを自動的に停止しますか?

個々のソースファイルをコンパイルできることは知っていますが、たとえば、多くの.cppファイルで使用されるヘッダーファイルを編集する場合、複数のソースファイルを再コンパイルする必要がある場合があります。それがビルドの目的です。

VC9(Visual C++ 2008)の「ビルド」コマンドのデフォルトの動作は、それを必要とするすべてのファイルをコンパイルしようとすることです。これにより、多くのコンパイルが失敗する場合があります。私は通常、エラーを監視し、ctrl-breakを押してビルドを手動で停止します。

ビルドが最初のコンパイルエラー(最初に失敗したプロジェクトビルドではない)で自動的に停止するように構成する方法はありますか?

47
jwfearn

私はより良いマクロの人を思いついた。最初のエラーの直後に停止します(ビルドウィンドウが更新されるとすぐに)。

Visual Studio->ツール->マクロ->マクロIDE ...(または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 

それがあなたたちのためにうまくいくことを願っています。

27
Eric Muyser

これは、イベントOnBuildProjConfigDoneに応答して実行されるマクロを追加することで実行できます。

マクロは次のとおりです。

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
jmatthias

ええ、これはMSVC2005-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
8

質問がVS2008に関するものであったことは知っていますが、VS 2012で同じ回答を検索しているときに、その質問に遭遇しました。マクロは2012年にサポートされなくなったため、マクロソリューションは機能しなくなります。

VS 2010および2012で明らかに機能する拡張機能をダウンロードできます ここ 。 VS2012でうまく機能することを確認できます。

拡張機能への元のリンクは this responseで与えられました。

3
RKG

この投稿 -ソリューションで最初のエラーでビルドが停止するのか、最初に失敗したプロジェクトで停止するのかわからない。

Ctrl-breakも手動で停止します。

ビルドが失敗した後、10分かけてインテリセンスを再構築するのを止める方法があれば!

1
Martin Beckett

ダウンロードすることもできます this 拡張子、VisualStudioのすべてのバージョンで動作するようです

1
Shocker