我正在处理一个 C++ 项目并尝试将其配置为使用 syntastic。在我的项目中,我有一个头文件的嵌套目录结构(实际的嵌套结构要糟糕得多,这是一个例子)。
--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/']
有用。
我的问题:
- 如何配置 syntastic 使其递归地包含一组目录的头文件?
- 您如何为多个项目执行此操作?当我切换我正在处理的项目时总是编辑 .vimrc 听起来不太正确。我相信一定有更好的方法。
EDIT:
我没有提到在我的 .vimrc 中,语法有以下选项:
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
给编译器的指令。
对于您的情况,这意味着:
- 创建文件
.syntastic_cpp_config
under sources
(假设那是你的代码所在的位置并且sources
在目录层次结构中处于相同的深度级别libs
).
-
将以下行放入其中:
-Ilibs/dir1
-Ilibs/dir2
-Ilibs/dir2/dir3
请注意,每行有 1 个标志。
- 这样你就不必在你的目录中包含所有包含目录
.vimrc
.
您可以使用不同的文件来保存每个项目的自定义配置,由.vimrc
全局变量g:syntastic_cpp_config_file
, eg
let g:syntastic_cpp_config_file = '.my_custom_include_file_for_syntastic'
Syntastic 将检查每个源目录及以上目录,直到找到该文件,然后使用它来生成输出。
See the 综合维基页面 https://github.com/vim-syntastic/syntastic/wiki/(v3.1.0)---C--:---gcc,
Old link https://github.com/scrooloose/syntastic/wiki/C--%3A---gcc更多细节。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)