自动停止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