Как добавить включаемый путь к flycheck c/ C++-clang?
Я попытался добавить путь к flycheck
c/ C++- лязг, но это не сработало.
я кладу foo.h
в ~/local/include
и добавил следующие строки в init.el
:
(add-hook 'c++-mode-hook
(lambda () (setq flycheck-clang-standard-library "libc++")))
(add-hook 'c++-mode-hook
(lambda () (setq flycheck-clang-language-standard "c++1y")))
(add-hook 'c++-mode-hook
(lambda () (setq flycheck-clang-include-path
(list "$HOME/local/include/"))))
И в файле с именем test.cpp
я написал
#include <foo.h>
flycheck
сказал, что
Файл 'foo.h' не найден
Что я делаю неправильно? я использую emacs24
, flycheck.el
от package.el
а также clang3.4
,
2 ответа
Использование expand-file-name
а также ~
чтобы ссылаться на пути в вашем домашнем каталоге:
(add-hook 'c++-mode-hook
(lambda () (setq flycheck-clang-include-path
(list (expand-file-name "~/local/include/")))))
Flycheck не использует системную оболочку для запуска Clang и не пытается расширить параметры оболочки в командной строке. Следовательно, $HOME
передается буквально Clang, который, очевидно, не работает.
Я не хочу получать кредит этим ответом, но он может быть кому-то полезен.
Используя принятый ответ и комментарии, установите переменную flycheck с переменными каталога:
У вас есть проект с исходным кодом C++ в ~/myproject
,
Добавить файл ~/myproject/.dir-locals.el
со следующим содержанием:
((nil . ((eval . (setq flycheck-clang-include-path
(list (expand-file-name "~/myproject/include/")))))))
Это сработало для меня.