我尝试将包含路径添加到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'文件
我做错了什么?我正在使用来自emacs24
和flycheck.el
的{{1}},package.el
。
答案 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/")))))))
这对我有用。