8

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

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

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

4

2 回答 2

4

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

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

搜索一下,也许有人已经写过这样的了。否则,您需要编写自己的编译器插件,然后:compiler ninja使用:set makeprg=ninja. 见:help write-compiler-plugin

于 2013-12-16T08:50:31.667 回答
0

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

于 2020-12-19T21:06:19.060 回答