繁体   English   中英

如何在构建系统编译代码的复制版本时在vim中设置makeprg

[英]how to set makeprg in vim when your build system is compiling a copied version of the code

我一直在使用vim integrated make命令来帮助我构建,修复,重复工作循环。 我们正在转向使用makeprg轻松更改的新构建系统。

问题是新构建系统在构建之前将源代码复制到沙箱位置,因此当我收到编译错误时,vim会打开复制的文件。 我最终改变了这个复制的文件,而不是主代码路径中的实际文件。

有些方法我可以通过某种方式告诉vim我的代码库路径是什么来解决这个问题?

你可以使用至少三种策略来解决这个问题,不幸的是,它们只需要告诉vim一个“代码库路径”,它们都需要更多的工作。 在选择之前,我建议阅读:help make_makeprg以便更好地了解:make过程“引擎盖下”。

  1. 编写一个shell / perl / ruby​​ /任何过滤构建过程输出的脚本,并根据/sandbox/src/blah.c将文件名从/sandbox/src/blah.c重写为src/blah.c/sandbox/srcsrc 然后在运行make时更改makeprg以包含过滤器程序(在.vimrc ,添加以下内容:set makeprg=make\\ \\\\\\|\\ filter )。 这可能很容易做到,但根据您使用的确切构建系统可能会变得更加棘手。

  2. 更改errorformat (请参阅:help errorformat )以删除沙箱前缀。 在某些情况下,这可能是不可能的,具体取决于构建系统的确切输出格式。

  3. 添加QuickFixCmdPost自动命令,在开始使用之前将重写quickfix窗口中的文件路径:cnext和friends。 如果您之前没有使用过Vim的自动命令功能,我会先尝试其他两种策略。 它们功能强大且非常实用,但它们需要一些练习才能做到正确。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM