14

我正在使用 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 尝试跳过前导“../”?

4

2 回答 2

17

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

Entering directory `...'
... 
Leaving directory `...'

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

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

于 2012-05-04T17:55:13.283 回答
0

有几次我通过 sed 传递 make 的输出来解决。

首先,交互式调试它'编译命令:make | sed 's/x/y/' 。然后将其重新打包为自定义的 emacs 交互功能。

于 2021-09-10T19:57:31.060 回答