【问题标题】:Quickfix list in vim when working with ninja and clang++使用 ninja 和 clang++ 时 vim 中的快速修复列表
【发布时间】:2013-12-15 21:46:24
【问题描述】:

我有一个使用 ninja 和 clang++ 编译的 C++ 项目,并且希望在编译过程中出现错误出现在 quickfix 列表中。目前,当我设置makeprg=ninja,然后运行:make时,ninja生成的所有输出都只是出现在quickfix窗口中,不能用于跳转到相应的文件/行等。

我不是在寻找 syntastic 提供的功能(我已经在使用),但我也想查看项目中其他文件的错误,类似于 IDE 提供的错误。

如果这不能(轻松)用 ninja 完成,也欢迎使用 make 的解决方案(该项目使用 cmake,所以两者都是可能的),但如果可能的话,我想留在 ninja。

【问题讨论】:

    标签: c++ vim clang++ ninja


    【解决方案1】:

    ninja生成的所有输出都只是出现在quickfix窗口中,不能用来跳转

    听起来 Vim 无法从错误中解析位置信息,因为尚未设置适当的 'errorformat'

    四处搜索,也许有人已经写过这样的东西。否则,您需要编写自己的编译器插件,然后使用:compiler ninja 而不是:set makeprg=ninja。见:help write-compiler-plugin

    【讨论】:

    • 是的,这看起来像是一个起点。但是我对使用ninja 作为我的:compiler 犹豫不决,因为它只是make 程序,而clang++ 是实际的编译器。但是,查看compiler/gcc.vim 文件,似乎这也使用了为make 的输出量身定制的errorformat
    【解决方案2】:

    CMake+Ninja 使用相对路径。这是 Vim 中的一个问题。 Vim 使用一种算法来尝试猜测引发错误的文件的位置。您可以在:h quickfix-directory-stack 找到后者的描述。 另外,请看这里:https://gitlab.kitware.com/cmake/cmake/-/issues/13894。 CMake 的人们已经意识到了这一点并且有一个未解决的问题。

    【讨论】:

      猜你喜欢
      • 2010-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多