我有一个C ++项目,*.cpp
文件位于c:\project
。我还使用伪树外构建系统,它使用c:\project\build
目录作为每个可执行文件,目标文件,自动生成文件等的输出目录。
通常情况下,当vim
为PWD
时,我正在启动c:\project
:
$ vim <file>
当我使用:make
命令时,我的构建工具启动并开始编译项目。如果有任何错误,我在Quickfix窗口(:cope
)中获得通常的错误列表。问题是“我的”构建工具(btw,它的waf
工具)是从c:\project\build
目录而不是c:\project
执行的,所以对源文件的任何引用都将相对于c:\project\build
目录。这意味着对于此文件:c:\project\main.cpp
,如果出现错误,我将收到如下错误消息:
..\main.cpp:9:0: <errormessage>
Vim的g++
解析器接受此错误行,从中提取文件(..\main.cpp
),但在点击回车后它不会打开它,因为vim的会话的PWD是c:\project
。点击回车后,vim会尝试打开c:\main.cpp
。
我可以从c:\project\build
目录启动vim并且它正常工作,但这反过来会导致像CtrlP
这样的vim插件出现问题,所以我想从项目的根目录启动vim会话,而不是构建的根。
vim是否可以将..\
替换为空字符串?我要求similar option that gdb has(源路径替换)。
答案 0 :(得分:1)
我在发布问题后不久就设法找到了解决方案。我需要更多地练习橡皮鸭调试。
我已经通过创建构建脚本(m.cmd
)来修复此问题:
@echo off
waf 2>&1 | sed "s#^..\\##g"
我确实设置了:set makeprg=m.cmd
。
现在它按预期工作。