2

我有一个使用自动工具的项目。autotools 的一个不错的功能是“源外”构建,而不是这样做:

cd foobar
./configure
make

我实际上为构建创建了一个文件夹,我在其中进行配置:

cd foobar/builds/linux
../../configure
make

(好处是我的源文件夹没有被生成的 Makefile 破坏,它在交叉编译时很有帮助)。

因此,当我在 emacs 中处理我的代码时,要运行编译,我会将M-x compile编译命令指定为cd ~/foobar/builds/linux ; make.

这工作正常,直到发生编译错误。编译缓冲区将列出具有丑陋路径的文件(如../../../../src...),它指向一个源文件,相对于构建文件夹。但是,似乎 emacs 在编译结束时不会留在构建文件夹中,所以链接不指向任何东西。因此,我不能轻易地浏览回错误。

我试着玩compilation-search-path,没有运气。

有没有办法强制 emacs 在编译文件夹中“停留”(以便编译缓冲区中的路径引用现有文件?)

谢谢

酸碱度

4

2 回答 2

4

如果您改为使用make -C ~/foobar/builds/linux, emacs 应该能够跟踪发出的Entering directory ...,消息并使用它来保持对文件的正确引用。Leaving directory ...

于 2009-11-23T14:52:28.217 回答
2

使用jamessan的建议,我可以通过以下方式部分解决问题:

  • 将“编译目录”设置为“源”文件夹之一(builds/linux/current/src/client)
  • 设置“编译命令”以使用 -C 更改为这些源文件夹之一

不太确定是否两者都需要,或者这是否是做事的最佳方式......

不管怎么说,还是要谢谢你 !

于 2009-11-23T22:36:40.700 回答