Я работаю с проектом C ++ и пытаюсь настроить его на использование синтетики. В моем проекте у меня есть вложенная структура каталогов заголовочных файлов (фактическая вложенная структура намного хуже, это пример).
--libs
|---dir1
|---foo1.h
|---dir2
|---foo2.h
|---foo3.h
|---dir3
|---foo4.h
Я включил файлы lib в мой файл .vimrc, используя:
let g: syntastic_cpp_include_dirs = [‘libs /’]
Я предполагал, что это займет все файлы заголовков рекурсивно, но это не так. В коде синтаксис жалуется с ошибкой «такой файл или каталог не найден».
Когда я явно изменяю переменную для ссылки на конкретный каталог:
let 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
директивы к компилятору.
Для вашего случая это означает:
.syntastic_cpp_config
под sources
(при условии, что это где ваш код и sources
находится на том же уровне глубины в иерархии каталогов, что и libs
).Поместите в него следующие строки:
-Ilibs/dir1
-Ilibs/dir2
-Ilibs/dir2/dir3
Обратите внимание, что флаги по 1 на строку.
.vimrc
,Вы можете иметь другой файл для хранения этой пользовательской конфигурации для проекта, указанного .vimrc
глобальная переменная g:syntastic_cpp_config_file
например,
let g:syntastic_cpp_config_file = '.my_custom_include_file_for_syntastic'
Syntastic будет проверять каждый исходный каталог и выше, пока не найдет этот файл, а затем использует его для создания выходных данных.
Увидеть Синтаксическая вики-страница,
Старая ссылка Больше подробностей.
У меня был тот же вопрос с небольшим количеством удачи. Тем не менее, я обнаружил, что если я использую заголовок стиля кавычек, синтаксический будет соответствующим образом проверять папки, а не выдавать предупреждения. Например, если вы работаете над foo2.cpp,
#include "dir3/foo4.h"#include "../dir1/foo1.h"
Скобка для сохранения включает в себя стандартные библиотеки и любые библиотеки, которые вы хотели бы жестко запрограммировать в vim.