Emacs,Cedet和语义

syn*_*ius 11 c c++ emacs cedet emacs-semantic

我在Alex文章之后为emacs配置了CEDET (很棒!!).现在,问题:

  1. 我已经在我的Gnu Global中生成了GTAGS /usr/include,如何检查语义是否正在使用GTAGS?
  2. 我可以将我的GTAGS保存在另一个目录中并指示语义使用该目录吗?
  3. 在C/C++源代码中,include语句(来自系统头文件)的完成不会列出所有可用的头文件.好吧,这是一个愚蠢的问题..但让我觉得有些事情是行不通的

Eri*_*ric 16

您可以使用以下命令:

M-x semantic-c-describe-environment RET
Run Code Online (Sandbox Code Playgroud)

了解您的包含路径和CPP宏设置.

要测试GNU Global的使用,您可以使用:

M-x semanticdb-test-gnu-global RET printf RET
Run Code Online (Sandbox Code Playgroud)

在某个项目中搜索"printf".由于您的项目(可能在/ home/you/myproject中)中没有printf,它将失败,但是如果您在/ usr/include中打开了一个文件并执行了相同的命令,那么它将有希望识别printf.

询问GNU Global的一般方法是:

M-x cedet-gnu-global-version-check RET
Run Code Online (Sandbox Code Playgroud)

总而言之,GNU Global支持最适合您希望不经常访问的大量预分析文件的情况.一旦访问了一个头文件(比如printf),就不再使用GNU Global数据库,因为将为它创建一个等效的语义数据库.这是必要的,因为GNU Global没有提供足够的信息来完成智能完成.