Как добавить включаемый путь к 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/")))))))

Это сработало для меня.

Другие вопросы по тегам