5

マルチ (レベル) dir プロジェクトで make -jn を使用M-x compileして並列コンパイルを行っているときに、エラーが発生すると、正しい場所に到達できませんnext-error。Emacs は、問題のあるファイルに対して常に間違ったディレクトリに移動します。しかし、-jn なしでそのまま実行しても問題ありません。

4

1 に答える 1

0

next-errorコンパイルのテキスト出力を使用して、移動先を決定します。しかし、並列コンパイルでは、このテキスト出力が破損する可能性があり、破損していなくてもあいまいになる可能性があり、多くの場合、あいまいになります (1 つのタスクで foo/bar をコンパイルし、もう 1 つのタスクで toto/titi をコンパイルすると、出力が「ディレクトリ foo; ディレクトリ toto に入る; バーのエラー:20; titi のエラー:69")。

この問題を解決するには、次の方法しか考えられません。

  • ディレクトリを変更しないように make ファイルを構成します (したがって、すべてのファイル名は同じ現在の作業ディレクトリに関連しています)。
  • 絶対ファイル名をコンパイラに渡すように make ファイルを変更して、エラー メッセージのすべてのファイル名が絶対名になるようにします。
  • Emacs をハックcompile.elして、"bar" を探すときに、前述のすべてのディレクトリでそれをフェッチするようにします。

この最後の変更はおそらく良いものです (つまり、パッチを歓迎します)。出力が「Entering directory foEntering directory toto; o;」のようになる可能性があるため、他の 2 つの変更でも問題が発生する可能性があります。この問題を回避するために何ができるかわかりません。

于 2012-09-07T14:34:55.207 に答える