我按照http://tuhdo.github.io/c-ide.html#orgheadline33教程使用emacs构建了一个c / c ++ IDE。
但是我在使用语义来完成公司模式和导航时遇到了问题。问题在于,当我试图告诉语义其他库或代码在哪里使用semantic-add-system-include时,它只适用于c ++包含。
如果我添加(semantic-add-system-include "~/mylib")
,语义将不会解析〜/ mylib中的文件,因此公司将无法工作。但如果我使用(semantic-add-system-include "/usr/include/c++/4.5.2/")
,这将有效。如何使其与其他代码或标题一起使用?
我也尝试过使用EDE。我的项目目录是这样的:
/project root
/lib1
/lib2
我试过
(ede-cpp-root-project "myproject"
:file "/home/user/myproject/Makefile"
:include-path '("/lib1"
"/lib2")
)
和
(ede-cpp-root-project "myproject"
:file "/home/user/myproject/Makefile"
:system-include-path '("/home/user")
)
然而,当我输入
时#include <myproject/lib1/xx.h>
在我的源文件中,语义不会解析正确的文件并提供完整的候选文件。
我只想在键入#include <myproject/lib1/xx.h>
时语义解析正确的文件。我可以用语义或/和EDE实现这个目标吗?
答案 0 :(得分:1)
我的semantic-mode-hook
中有以下内容。变量semantic-dependency-system-include-path
是模式本地的。请尝试在以下内容中重新定义your-c-include-dirs
或your-c++-include-dirs
。
(defun your-semantic-hook ()
;; these are buffer-local
(mapc (lambda (dir)
(semantic-add-system-include dir 'c-mode))
your-c-include-dirs)
(mapc (lambda (dir)
(semantic-add-system-include dir 'c++-mode))
your-c++-include-dirs))
(add-hook 'semantic-mode-hook 'your-semantic-hook)