14

我尝试将包含路径添加到flycheckc/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.elfrompackage.elclang3.4.

4

2 回答 2

12

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

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

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

于 2014-06-08T08:22:14.373 回答
9

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

您有一个项目,其 C++ 源代码位于~/myproject.
添加~/myproject/.dir-locals.el具有以下内容的文件:

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

这对我有用。

于 2017-12-12T13:26:27.693 回答