4

我最近开始irony-mode在 emacs (24.3.1) 中使用完成。但是,我似乎无法为包添加额外的系统包含路径。

我的配置中有这段代码:

(defun ac-cc-mode-clang-hooks ()
  (yas/minor-mode-on)
  (auto-complete-mode 1)

  ;; avoid enabling irony-mode in modes that inherits c-mode, e.g: php-mode
  (when (member major-mode irony-known-modes)
       (irony-mode 1))

  ;; set compiler flags to include header files
  (setq irony-compile-flags '("-Iinc"))
  (irony-reload-flags))

(add-hook 'c++-mode-hook 'ac-cc-mode-clang-hooks)
(add-hook 'c-mode-hook 'ac-cc-mode-clang-hooks)

irony-mode 正确加载,并且编译器明确知道的包含路径(即由 打印的所有内容)完美地完成,但没有拾取 echo "" | g++ -v -x c++ -E -附加的包含路径(无论它是相对路径还是绝对路径都无关紧要)。inc

但是,如果我将信息添加到.clang_complete文件并使用C-c C-b包含路径加载它,则会识别并使用它。显然这是一个不太理想的设置,因为

  1. 我不想为.clang_complete我正在处理的每一段代码创建一个文件
  2. .clang_complete文件不会自动加载。

是否有一些工作方法(不涉及每个项目的设置,我不想为每段代码创建项目管理文件)来告诉irony-mode在哪里寻找头文件?

4

1 回答 1

4

你可以看看这里:https ://github.com/Sarcasm/irony-mode#i-got-an-error-due-to-stdargh-how-to-solve-this

该变量irony-libclang-additional-flags应满足您的需求。它应该在没有调用的情况下工作irony-reload-flags

虽然它不是缓冲区局部变量,所以你不需要把它放在钩子里。

我会推荐以下内容:

(setq irony-libclang-additional-flags
      (append '("-I" "inc") irony-libclang-additional-flags))
于 2013-12-04T14:24:29.167 回答