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

How to add include path to flycheck c/c++-clang?

本文关键字:flycheck c++-clang 路径 包含 何添加 添加      更新时间:2023-10-16

我试图添加包含路径到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.elpackage.elclang3.4

使用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,这显然不起作用。

我不想通过这个答案获得荣誉,但它可能对某人有用。
使用接受的答案和注释将flycheck变量设置为目录变量:

~/myproject中有一个带有c++源代码的项目。
添加~/myproject/.dir-locals.el文件,内容如下:

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