Visual Studio makefile项目未在编辑器中显示错误

时间:2011-05-06 20:11:34

标签: visual-studio visual-c++ arm

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

在“错误”窗格中显示正确的文件,但行号为空。有没有办法让Visual C ++更好地解析错误消息以提取正确的行号并将错误链接到编辑器?

更新: 当我在与makefile或构建脚本相同的目录中创建解决方案/项目时,Visual C ++正确解析了编译器输出。当解决方案/项目是在与makefile不同的目录中创建时,我只遇到此问题。

2 个答案:

答案 0 :(得分:4)

过去我使用的脚本将我的第三方编译器的错误消息过滤为Visual Studio期望的格式。我已经丢失了脚本(由于暂时不需要它们,changin工作等)。

以下是Microsoft新闻组发布的镜像(我在Google网上论坛中找不到帖子),它描述了类似的流程以及sed脚本:

相关信息是VS构建配置启动工具并通过sed脚本管道输出:

CALL mm.bat 2<&1 | sed -u -f ..\..\errfix.sed

和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期待什么。

答案 1 :(得分:4)

如果其他人在这个问题上绊倒。这就是我最终的结果:

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

这适用于file.c的gcc错误格式:line#:error desc(例如main.c:12:HelloWorld未定义)

2&lt;&amp; 1位确保我们也捕获stderr,第一个sed替换将cygwin驱动器映射替换回windows(我的情况),第二个替换:dd:error格式为(dd):for以.c或.h。

结尾的文件

最后,make的退出状态通过退出$ {PIPESTATUS [0]}位保持,以便visual studio不认为构建成功只是因为sed成功。