5

当我使用M-x compilemake -jn 为多(级别)目录项目进行并行编译时,当我遇到错误时,我无法使用next-error东西到达正确的位置。Emacs 总是为有问题的文件进入错误的目录。但是如果我不使用-jn 就没有问题。

4

1 回答 1

0

next-error使用编译的文本输出来确定去哪里。但是对于并行编译,这个文本输出可能会被破坏,即使它没有被破坏,它也可能并且经常是模棱两可的(想想一个任务编译 foo/bar 而另一个任务编译 toto/titi,输出看起来像“进入目录 foo;进入目录 toto;bar 中的错误:20;titi 中的错误:69")。

我只能想到以下方法来解决这个问题:

  • 构建你的make文件,这样你就永远不会改变目录(所以所有的文件名都是相对于同一个当前工作目录的)。
  • 更改您的 make 文件以便将绝对文件名传递给您的编译器,因此错误消息中的所有文件名都是绝对的。
  • 破解 Emacscompile.el以便在查找“bar”时,它会在之前提到的所有目录中获取它。

最后一个更改可能是一个不错的更改(即欢迎补丁),但请注意,如果“bar”同时存在于“foo”和“toto”中,它仍然会遇到问题。另外两个更改也可能会遇到问题,因为输出也可能最终看起来像 "Entering directory foEntering directory toto; o;"; 而且我不知道可以做些什么来避免这个问题。

于 2012-09-07T14:34:55.207 回答