2013-05-18 15 views
16

私はC++プロジェクトで作業しており、syntasticを使用するように設定しようとしています。私のプロジェクトでは、ヘッダーファイルのネストされたディレクトリ構造を持っています(実際の入れ子構造はずっと悪く、これは例です)。ヘッダファイルを再帰的に組み込みのために

--libs  
    |---dir1 
     |---foo1.h  
    |---dir2 
     |---foo2.h 
     |---foo3.h 
     |---dir3 
       |---foo4.h 

私が使用して私のファイル.vimrcにLIBファイルが含まれている:

のletグラム:syntastic_cpp_include_dirs = [ 'libsに/']

私は、これはすべてのかかるだろうと想定ヘッダーファイルは再帰的には使用されますが、そうではありません。コードでは、シンタクスは、「そのようなファイルやディレクトリが見つかりません」というエラーが表示されます。

私は明示的に特定のディレクトリを参照するための変数を変更します。

のletグラム:syntastic_cpp_include_dirs = [ 'libsに/ DIR2/DIR3 /']

それが動作します。

私の質問:

  1. それは再帰的にディレクトリのセットのヘッダファイルを含むようにどのようにsyntasticを設定しますか。
  2. 複数のプロジェクトでどのようにこれを行いますか?私が取り組んでいるプロジェクトを切り替えるときに常に.vimrcを編集するのは正しいとは言えません。私は良い方法がなければならないと信じています。

EDIT:

私は私の.vimrcで、次のオプションがsyntasticのために存在していることを言及しなかった。

let g:syntastic_check_on_open=1 
let g:syntastic_enable_signs=1 
let g:syntastic_cpp_include_dirs = ['libs/dir2/dir3', 'libs/dir2 ] 
let g:syntastic_cpp_check_header = 1 
let g:syntastic_cpp_remove_include_errors = 1 
+0

'let g:syntastic_cpp_check_header = 1'を試しましたか? – timss

+0

はい、あります。今質問にあった設定オプションを追加しました。申し訳ありません。 –

答えて

28

プロジェクトごとにヘッダーファイルを検索するすべてのディレクトリをプロジェクトルートディレクトリのファイル.syntastic_cpp_configに含めることができます。これを行うためのフォーマットは、-Iディレクティブをコンパイラに提供するのと同じです。

あなたのケースのために、それは意味:

  • sourcesの下でファイル.syntastic_cpp_configを作成します(あなたのコードがあるとsourceslibsとしてディレクトリ階層内の同じ深さのレベルであるところだと仮定)。
  • はそれで次の行を入れてください:

    -Ilibs/dir1

    -Ilibs/dir2

    -Ilibs/dir2/dir3

  • 注フラグが行につき1です。

  • この方法では、すべてのインクルードディレクトリを.vimrcに持つ必要はありません。

あなたはそれがこのファイルを見つけるとまでSyntasticが上向きに各ソースディレクトリをチェックします例えば

let g:syntastic_cpp_config_file = '.my_custom_include_file_for_syntastic' 

.vimrcグローバル変数g:syntastic_cpp_config_fileで指定されたプロジェクトごとにこのカスタム設定を、保持するために別のファイルを持つことができますその出力を生成するために使用します。

詳しくは、Syntastic wiki page,Old linkを参照してください。

0

私は少し運と同じ質問をしました。しかし、引用符スタイルのヘッダーインクルードを使用すると、構文が適切にフォルダをチェックし、警告を出さないことがわかりました。あなたは、foo2.cpp上で作業している場合たとえば、

#include "dir3/foo4.h" 
#include "../dir1/foo1.h" 

保存ブラケットが標準LIBS、あなたがvimのにハードコーディングするように感じるの任意のlibsのために含まれています。

関連する問題