【问题标题】:Visual Studio makefile project not showing errors in editorVisual Studio makefile 项目未在编辑器中显示错误
【发布时间】:2016-03-30 13:27:42
【问题描述】:

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

    这是一个 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 的预期。

    【讨论】:

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

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

    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:line#: error desc 的 gcc 错误格式(例如 main.c:12: HelloWorld is undefined)

    2

    最后,make的退出状态是通过exit ${PIPESTATUS[0]}位来维护的,这样visual studio就不会因为sed成功就认为构建成功了。

    【讨论】:

      猜你喜欢
      • 2011-01-06
      • 2021-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多