自动停止Visual C ++ 2008编译首先编译错误?

我知道我可以编译单独的源文件,但是有时候 – 比如编辑许多.cpp文件使用的头文件 – 需要重新编译多个源文件。 这就是Build的用途。

VC9(Visual C ++ 2008)中“Build”命令的默认行为是试图编译所有需要它的文件。 有时这只会导致许多失败的编译。 我通常只是看错误,并按CTRL – 中断手动停止生成。

有没有办法来configuration它,这样的生成停止在第一次编译错误 (而不是第一次失败的项目构build)自动?

我想出了一个更好的macros观家伙。 它在第一个错误之后立即停止(即将更新构build窗口)。

Visual Studio – >工具 – >macros – >macrosIDE …(或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 

希望它为你们工作。

这可以通过添加一个响应事件OnBuildProjConfigDone运行的macros来完成。

macros观如下:

 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 

是的,这在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 

我知道这个问题是针对VS 2008的,但是当我在VS 2012中寻找同样的答案时,我偶然发现了这个问题。由于2012年不再支持macros,macros解决scheme将无法工作。

你可以在这里下载一个VS 2010和2012的扩展。 我可以确认它在VS 2012中运行良好。

在这个回应中给出了扩展的原始链接。

有这篇文章 – 不知道它是否停止在第一个错误或解决scheme中的第一个失败的项目生成。

Ctrl-break也会手动停止它。

现在如果有什么方法可以阻止它在构build失败后花10分钟重buildintelisense!

您也可以下载这个扩展,似乎适用于每个版本的Visual Studio