使用msbuild.exe时显示列错误

4

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]

如果将日志详细程度更改为“诊断”,您是否可以从cl.exe获得适当的详细信息级别? - Nicodemeus
不,这并没有改变任何事情,除了MSBuild打印了很多技术行话... - elmattic
技术行话是 Stack Overflow 的主要语言!(你应该发布一些它,连同 Visual Studio 版本,如果你所说的“msbuild.exe 的输出”是指“Visual Studio 中的错误窗格”) - Nicodemeus
@Nick,我在谈论ST控制台中msbuild.exe的输出,这与VS2012中的“输出”窗格完全相同。 - elmattic
1个回答

5
这与MSBuild.exe无关,而是C++编译器不会提供列号信息。 它也没有打开它的选项。
这是C或C ++的构建模型固有的问题。 预处理器首先处理源代码,通常会显着更改它。 编译器本身只能看到源代码的预处理版本。 C ++编译器有一种机制可以保留原始文件名和行号(请参阅#line),但不能保留列号,这是不切实际的。
因此,缺少列号是设计上的问题。
值得注意的是Clang,这是一个编译器项目,其唯一目的是消除几个基本的C ++编译限制。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接