簡體   English   中英

合成包含遞歸的頭文件

[英]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 /']

有用。

我的問題:

  1. 如何配置合成,以便它包括遞歸的一組目錄的頭文件?
  2. 你如何為多個項目做到這一點? 當我切換我正在處理的項目時,總是編輯.vimrc聽起來不對。 我相信一定有更好的方法。

編輯:

我沒有在我的.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM