Visual studio Visual Studio makefile项目在编辑器中未显示错误 我使用ARM编译器(RVDS),使用Visual C++ 2005 Express作为IDE,因为我不是旧版本的Eclipse ARM选择的粉丝。我创建了一个正确构建的makefile项目。不幸的是,当出现编译错误时,错误会显示在“错误”窗格中,但双击错误不会在编辑器中打开文件

Visual studio Visual Studio makefile项目在编辑器中未显示错误 我使用ARM编译器(RVDS),使用Visual C++ 2005 Express作为IDE,因为我不是旧版本的Eclipse ARM选择的粉丝。我创建了一个正确构建的makefile项目。不幸的是,当出现编译错误时,错误会显示在“错误”窗格中,但双击错误不会在编辑器中打开文件,visual-studio,visual-c++,arm,Visual Studio,Visual C++,Arm,在“错误”窗格中显示正确的文件,但行号为空。有没有办法让VisualC++更好地解析错误消息,以提取正确的行号并将错误链接到编辑器? 更新: VisualC++在我与MaFe文件或构建脚本在同一目录中创建解决方案/项目时正确解析编译器输出。我只有在解决方案/项目创建在与makefile不同的目录中时才遇到这个问题 在过去,我使用了一个脚本,将我的第三方编译器的错误消息过滤成Visual Studio期望的格式。我已经丢失了这些脚本(因为一段时间内不需要它们,因为我的工作是变化的,等等) 下面是M

在“错误”窗格中显示正确的文件,但行号为空。有没有办法让VisualC++更好地解析错误消息,以提取正确的行号并将错误链接到编辑器? 更新:
VisualC++在我与MaFe文件或构建脚本在同一目录中创建解决方案/项目时正确解析编译器输出。我只有在解决方案/项目创建在与makefile不同的目录中时才遇到这个问题

在过去,我使用了一个脚本,将我的第三方编译器的错误消息过滤成Visual Studio期望的格式。我已经丢失了这些脚本(因为一段时间内不需要它们,因为我的工作是变化的,等等)

下面是Microsoft新闻组发布的镜像(我在Google Groups中找不到该帖子),它描述了一个类似的过程以及一个sed脚本:

CALL mm.bat 2<&1 | sed -u -f ..\..\errfix.sed
#------- START errfix.sed
#MPC561 - TYPE:\1 ID:\2 FILE:\3 LINE:\4 POS:\5 REST:\6
s/^(\([EWI]\)) \([A-Z][0-9]*-*[A-Z]*\); "\(.*\)", line \([0-9]*\) pos \([0-9]*\); \(.*\)/\3(\4) : (\1) \2 : \6/
s/(E)/Error/g
s/(W)/Warning/g
s/(I)/Informational/g
s/..\\..\\..\\cu\\//
s/..\\..\\../../
#------- END
相关信息是VS build配置启动该工具,并通过sed脚本传递输出:

CALL mm.bat 2<&1 | sed -u -f ..\..\errfix.sed
#------- START errfix.sed
#MPC561 - TYPE:\1 ID:\2 FILE:\3 LINE:\4 POS:\5 REST:\6
s/^(\([EWI]\)) \([A-Z][0-9]*-*[A-Z]*\); "\(.*\)", line \([0-9]*\) pos \([0-9]*\); \(.*\)/\3(\4) : (\1) \2 : \6/
s/(E)/Error/g
s/(W)/Warning/g
s/(I)/Informational/g
s/..\\..\\..\\cu\\//
s/..\\..\\../../
#------- END

我想脚本需要根据您的特定工具进行定制-乍一看脚本看起来非常吓人(无论如何对我来说),但我敢打赌,让它将输出调整到VS期望的值不会太难。

以防其他人在这个问题上绊倒。以下是我最终得到的结果:

make -f $(TargetName).mak  2<&1 | sed -e 's|/cygdrive/\([a-z]\)/|\1:/|' -e 's/\.\([ch]\):\([0-9]*\)/.\1 (\2)/' ; exit ${PIPESTATUS[0]}

make-f$(TargetName).mak 2在我的例子中
s/^(\([EWI]\)\([A-Z][0-9]*-*[A-Z]*\);“\(.*\”,第\([0-9]*\)行pos
给出:
sed:file errfix.sed第2行:unterminated
s”命令“@user3007735:我相信通过原始帖子的剪切粘贴问题,sed脚本的第一行被一分为二。请记住,我不知道这个sed脚本正在转换什么类型的错误消息。sed脚本只是一个示例,说明了如何将来自一个工具的错误消息转换为VS可以使用的错误消息。是的,你是对的,我更正了它,它工作正常,但VS 08仍然没有显示错误或警告:(@user3007735:请记住,编写sed脚本是为了重新格式化特定的错误消息。如果您的工具生成不同的消息(很可能,因为我甚至不知道编写脚本是为了处理什么工具),那么您需要一个不同的脚本。@MichaelBurr您在这个问题中提供的链接现在已成为某种形式的垃圾邮件站点。