使用msbuild.exe时显示列错误

时间:2014-02-10 16:31:01

标签: visual-studio-2012 msbuild

是否可以在MSBuild.exe的输出中获取发生错误的列号(主要来自cl.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]

1 个答案:

答案 0 :(得分:5)

这与MSBuild.exe没有任何关系。 C ++编译器不提供列号信息。它没有打开它的选项。

这是C或C ++构建模型中固有的。预处理器首先获取源代码,并经常显着改变它。编译器本身只能看到源的预处理版本。 C ++编译器有一种机制来保存原始文件名和行号(see #line)但不保留列号,这是不切实际的。

所以不,缺少列号是设计的。

值得注意的是Clang,这是一个编译器项目,其唯一的原因是消除了这些基本的C ++编译限制。