2011-06-20 30 views
3

私は自分自身のmakeファイルを持つ複数のサブプロジェクトを持つプロジェクトセットアップを持っています。メインディレクトリには、各プロジェクトにcdして適切な順序でmakeを実行するmaster makeファイルがあります。サブディレクトリにmakeを実行するmakefileでvimのmakeコマンドを使用する

メイクファイルのコマンドは次のようになります。

sub-project/sub-project.a: 
    cd sub-project ; make 

私が持っている問題は、私はvimの中でmakeを実行し、エラーが報告されたとき、Vimは何でも内側からの相対パスに基づいてファイルを開こうとしていることですプロジェクトにエラーがありました。 vimにサブプロジェクトディレクトリではなくルートディレクトリから相対パスを取得させる方法はありますか?

答えて

5

メイクファイルは、以下のように、それは、サブディレクトリに入り、離れたときに報告されていることを確認してください:私の経験で

make[1]: Entering directory `/home/username/projects/projectname/subdir1' 
[... compile commands ...] 
make[1]: Leaving directory `/home/username/projects/projectname/subdir1' 

を、Vimがエラーのあるファイルの正しいパスを見つけるために、出力のこの部分を解析します。また、数年前の私の(欲求不満の)経験では、メッセージなしでは、vimはエラーメッセージによって参照されるファイルをどこで探すべきか分かりません。これは、この例のように、再帰的なサブディレクトリの建物でも、動作することを

注:

make[1]: Entering directory `/home/username/projects/projectname/subdir1' 
make[2]: Entering directory `/home/username/projects/projectname/subdir1/blah' 
[... compile commands ...] 
make[2]: Leaving directory `/home/username/projects/projectname/subdir1/blah' 
make[1]: Leaving directory `/home/username/projects/projectname/subdir1' 
+0

ありがとうございました!これはうまくいった。私は自分のカスタム出力でMakefileをSilentにして、出力をクリーナーにしました。私が沈黙を取るとすぐに、vimは期待どおりに働き始めました。 – drewag

+0

@drewag:私はサイレントがうれしいことに同意します...しかしそうした場合、同様の出力を戻してください。それは前に私に合ったものと同じものだった。幸運なことに、vimを使用すると、余分なものを簡単にスキップして出力を作成し、エラーに直接進むことができるので、今はあまり気にしません。 –

+0

私は、私が最近いくつかの変更を加えたので、私の再帰的構築システムで何かが間違っていると確信していたので、しばらくの間これを苦労してきました。この記事のおかげで、@ Calebの問題点を突き止めることができました:あなたが絶対に正しいとわかるように、vimはそれらの文字列を解析し、ビルドアウトを追跡します。しかしロケールが "正しい"場合に限り(少なくとも私の場合は)。私の解決策は、常にLC_ALL = en_CA.UTF-8を.envに追加することでした。これがvimのエラーであるかどうかは確かではありません(vimはロケールの設定方法と同じものでなければなりません)。 –

2

:make -wは、Vimは現在のディレクトリがコンパイルされて理解することが重要であるディレクトリリストを生成するのに十分です。

関連する問題