修复在emacs中进行源代码外自动工具构建时的源文件搜索路径

修复在emacs中进行源代码外自动工具构建时的源文件搜索路径,emacs,compilation,autotools,Emacs,Compilation,Autotools,我有一个使用自动工具的项目。autotools的一个很好的功能是“源代码外”构建,而不是执行以下操作: cd foobar ./configure make 实际上,我为构建创建了一个文件夹,在其中进行配置: cd foobar/builds/linux ../../configure make (准确的是,我的源文件夹不会被生成的makefile破坏,并且在交叉编译时会有所帮助) 因此,当我在emacs中编写代码时,要运行编译,我将执行M-xcompile将编译命令指定为cd~/fooba

我有一个使用自动工具的项目。autotools的一个很好的功能是“源代码外”构建,而不是执行以下操作:

cd foobar
./configure
make
实际上,我为构建创建了一个文件夹,在其中进行配置:

cd foobar/builds/linux
../../configure
make
(准确的是,我的源文件夹不会被生成的makefile破坏,并且在交叉编译时会有所帮助)

因此,当我在emacs中编写代码时,要运行编译,我将执行
M-xcompile
将编译命令指定为
cd~/foobar/builds/linux;制作

在出现编译错误之前,这种方法可以正常工作。编译缓冲区将列出具有丑陋路径(如
。/../../../../src…
)的文件,该路径指向相对于生成文件夹的源文件。但是,在编译结束时,emacs似乎不会停留在生成文件夹中,因此链接不会指向任何内容。因此,我无法轻松浏览回错误

我试着玩
编译搜索路径
,但运气不好

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

谢谢


PH

如果改为使用
make-C~/foobar/builds/linux
,emacs应该能够跟踪make-emits发出的
进入目录…
离开目录…
消息,并使用它来保持对文件的正确引用。

使用jamessan建议,我可以通过以下方式部分修复此问题:

  • 将“编译目录”设置为“源”文件夹之一(builds/linux/current/src/client)
  • 设置“编译”命令以使用-C更改为其中一个源文件夹
不太确定两者是否都需要,或者这是否是做事情的最佳方式


无论如何谢谢你

谢谢,但似乎没有用。。我应该补充一点,我有几个源文件夹,并且我在顶层运行make。例如:*我在编译缓冲区中的/home/phtrivier/prj/foobar/builds/linux/current*我在/home/phtrivier/prj/foobar/src/client中的一个文件中有一个错误,使用'make-C~/foobar/builds/linux/current check'时,我得到了错误:make[2]:entrans le répertoire«/home/phtrivier/prj/foobar/builds/linux/current/src/client。。。(已跳过编译行)/../../../../../../src/client/whatever.cpp,但单击该行时,未找到该行:(