如何调整Emacs的compile-goto-error从编译缓冲区获取的路径?

Arn*_*rne 13 emacs compilation build-system

我使用Emacs 23并遇到以下问题:

我在Emacs中运行我们项目的构建系统,如Mx compile - > cd/foo/bar && ./build

构建系统现在做了一些魔术,"cd"进入构建过程的某个子目录,然后gcc抛出一个错误:

../src/somesource.cc:50错误:blablabla

现在的问题是Emacs不会找到该路径,因为它假定编译过程在/ foo/bar中开始,而不是在/ foo/bar/builddir中.所以领先的"../"对Emacs不起作用,例如在运行compile-goto-error时.有没有办法告诉Emacs尝试跳过领先的"../"?

cjm*_*cjm 15

最佳解决方案可能是更改构建系统以在更改目录时发出消息.Emacs寻找

Entering directory `...'
... 
Leaving directory `...'
Run Code Online (Sandbox Code Playgroud)

(请参阅compilation-directory-matcher变量.如果构建系统在更改目录时确实发出消息,但它们不是Emacs正在寻找的格式,则可以添加新的正则表达式compilation-directory-matcher.)

另一种解决方案是更改compilation-search-path(这是一个目录列表).

  • @ Arne,GNU Make在使用递归Makefile时[以该格式打印消息](http://www.gnu.org/software/make/manual/html_node/_002dw-Option.html)。这就是Emacs寻找他们的原因。 (2认同)