如何添加包含路径到flycheck c / c ++ - clang?

时间:2014-06-07 13:43:43

标签: c++ emacs flycheck

我尝试将包含路径添加到flycheck c / c ++ - clang,但它没有用。

我将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'文件

我做错了什么?我正在使用来自emacs24flycheck.el的{​​{1}},package.el

2 个答案:

答案 0 :(得分:9)

使用expand-file-name~来引用主目录中的路径:

(add-hook 'c++-mode-hook
          (lambda () (setq flycheck-clang-include-path
                           (list (expand-file-name "~/local/include/")))))

Flycheck不使用系统shell来运行Clang,也不会尝试在命令行中扩展shell参数。因此,$HOME字面传递给Clang,这显然不起作用。

答案 1 :(得分:3)

我不想通过这个答案获得信任,但它可能对某人有用 使用接受的答案和评论将 flycheck变量设置为目录变量

您在~/myproject中有一个包含C ++源代码的项目 使用以下内容添加文件~/myproject/.dir-locals.el

((nil . ((eval . (setq flycheck-clang-include-path
                       (list (expand-file-name "~/myproject/include/")))))))

这对我有用。