首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >递归地包括用于同步的头文件。

递归地包括用于同步的头文件。
EN

Stack Overflow用户
提问于 2013-05-18 10:02:43
回答 2查看 15K关注 0票数 21

我正在处理一个C++项目,并试图将其配置为使用语法。在我的项目中,我有一个头文件的嵌套目录结构(实际的嵌套结构更糟糕,这就是一个例子)。

代码语言:javascript
复制
--libs    
    |---dir1
         |---foo1.h    
    |---dir2
         |---foo2.h
         |---foo3.h
         |---dir3
               |---foo4.h

我使用以下方法将库文件包括在我的.vimrc文件中:

设g:syntastic_cpp_include_dirs = 'libs/‘

我以为这会递归地接收所有的头文件,但它没有。在代码中,syntastic会抱怨错误“没有找到这样的文件或目录”。

当我显式地将变量更改为引用特定目录时:

设g:syntastic_cpp_include_dirs =‘libs/dir3 2/dir3 3/’

它工作了。

我的问题:

  1. 如何配置同步,以便递归地包含一组目录的头文件?
  2. 如何在多个项目中做到这一点?当我切换我正在处理的项目时,总是编辑.vimrc听起来不太正确。我相信一定有更好的办法。

编辑:

我没有提到在我的.vimrc中,有以下选项可用于语法:

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-02 18:14:48

您可以在.syntastic_cpp_config文件中的项目根目录中包含要搜索的每个项目的所有目录。这样做的格式与向编译器提供-I指令相同。

就你的情况而言,这意味着:

  • sources下创建一个文件sources(假设您的代码所在,并且sources在目录层次结构中与libs处于相同的深度级别)。
  • 在它中插入以下几行: -Ilibs/dir1 -Ilibs/dir2 -Ilibs/dir2/dir3
  • 注意,每一行的标志是1。
  • 这样,您就不必在.vimrc中拥有所有的包含目录。

您可以有一个不同的文件来保存由.vimrc全局变量g:syntastic_cpp_config_file指定的每个项目的自定义配置,例如

代码语言:javascript
复制
let g:syntastic_cpp_config_file = '.my_custom_include_file_for_syntastic'

Syntastic将检查每个源目录和向上,直到它找到这个文件,然后使用它来生成它的输出。

有关更多细节,请参见合成wiki页面旧链

票数 36
EN

Stack Overflow用户

发布于 2013-05-30 03:08:27

我也遇到过同样的问题,但运气不佳。但是,我发现如果我使用引号样式标头包含,语法将适当地检查文件夹,而不是发出警告。例如,如果您正在使用foo2.cpp,

代码语言:javascript
复制
#include "dir3/foo4.h"
#include "../dir1/foo1.h"

保存括号包括标准库和任何您觉得像硬编码到vim中的库。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16622992

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档