2014-02-10 28 views
4

是否有可能在MSBuild.exe的輸出中獲取發生錯誤的列號(主要來自cl.exe)?使用msbuild.exe時顯示列錯誤

我想在Sublime Text上正確地綁定F4鍵。

Microsoft (R) Build Engine version 4.0.30319.17929 
[Microsoft .NET Framework, version 4.0.30319.17929] 
Copyright (C) Microsoft Corporation. All rights reserved. 

    'Microsoft Visual C++ Compiler Nov 2012 CTP' is for testing purposes only. 
    Mesh.cpp 
..\..\..\lib\Kernel\Mesh.cpp(94): error C2143: syntax error : missing ';' before 'return' [C:\Users\Stringer\Code\XXXXXXX\kernel\lib\Kernel\kernel.vcxproj] 
[Finished in 1.4s] 
+0

如果您將日誌記錄的詳細程度更改爲'diagnostic',那麼您是否從cl.exe獲得適當的詳細級別? – Nicodemeus

+0

不,這不會改變任何MSBuild打印大量技術俚語... – Stringer

+0

技術俚語是堆棧溢出的主要語言! (你應該發佈一些,以及Visual Studio版本,如果通過msbuild.exe的輸出,你的意思是「visual studio中的錯誤窗格」) – Nicodemeus

回答

5

這與MSBuild.exe沒有任何關係。 C++編譯器不會提供列號信息。它沒有選項可以打開它。

這是C或C++構建模型的固有特性。預處理器首先對源代碼進行處理,並經常對其進行重大修改。編譯器本身只能看到預處理版本的源代碼。 C++編譯器有一種機制來保留原始文件名和行號(see #line),但不能用於列號,這是不實際的。

所以不行,缺少列數是由設計。

值得注意的是Clang,一個編譯器項目,其唯一的原因是消除了其中幾個基本的C++編譯限制。