[英]Including header files recursively for syntastic
我正在使用C ++項目並嘗試將其配置為使用合成。 在我的項目中,我有一個嵌套的頭文件目錄結構(實際的嵌套結構更糟糕,這是一個例子)。
--libs
|---dir1
|---foo1.h
|---dir2
|---foo2.h
|---foo3.h
|---dir3
|---foo4.h
我使用以下命令將lib文件包含在我的.vimrc文件中:
讓g:syntastic_cpp_include_dirs = ['libs /']
我假設這會以遞歸方式獲取所有頭文件,但事實並非如此。 在代碼中,syntastic抱怨錯誤'找不到這樣的文件或目錄'。
當我顯式更改變量以引用特定目錄時:
讓g:syntastic_cpp_include_dirs = ['libs / dir2 / dir3 /']
有用。
我的問題:
編輯:
我沒有在我的.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
您可以在項目根目錄中的文件.syntastic_cpp_config
包含要搜索的每個項目的頭文件的所有目錄。 這樣做的格式與向編譯器提供-I
指令的格式相同。
對於您的情況,它意味着:
sources
下創建一個.syntastic_cpp_config
文件(假設代碼所在的位置和sources
在目錄層次結構中與libs
處於同一深度級別)。 在其中添加以下行:
-Ilibs/dir1
-Ilibs/dir2
-Ilibs/dir2/dir3
請注意,每行標志為1。
.vimrc
所有include目錄。 您可以使用不同的文件來保存每個項目的自定義配置,由.vimrc
全局變量g:syntastic_cpp_config_file
,例如
let g:syntastic_cpp_config_file = '.my_custom_include_file_for_syntastic'
Syntastic將檢查每個源目錄及其向上,直到找到此文件,然后使用它來生成其輸出。
有關更多詳細信息,請參見Syntastic wiki頁面 , 舊鏈接 。
我有同樣的問題,運氣不好。 但是,我發現如果我使用引號樣式頭包含,則syntactic將適當地檢查文件夾而不發出警告。 例如,如果您正在使用foo2.cpp,
#include "dir3/foo4.h"
#include "../dir1/foo1.h"
保存括號包括標准庫和任何你想要硬編碼到vim的庫。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.