尝试使用CEDET / EDE设置C ++项目

时间:2013-08-12 16:46:50

标签: c++ emacs24 cedet

我正在处理几个C ++项目。为了自动完成,我一直在使用语义。但是,我想更好地利用那里的工具。

我有以下目录结构

  • 项目/
    • 生成文件
    • 的src /
      • 我的.cpp和.h文件
      • couple_other_directories /
    • 测试/
      • 我的测试文件

我目前在.emacs中有以下内容

(load-file "~/.emacs.d/vendor/cedet-bzr/cedet-devel-load.el")

(add-to-list 'semantic-default-submodes 'global-semanticdb-minor-mode)
(add-to-list 'semantic-default-submodes 'global-semantic-idle-local-symbol-highlight-mode)
(add-to-list 'semantic-default-submodes 'global-semantic-idle-scheduler-mode)
(add-to-list 'semantic-default-submodes 'global-semantic-idle-completions-mode)
(add-to-list 'semantic-default-submodes 'global-semantic-idle-summary-mode)
(add-to-list 'semantic-default-submodes 'global-semantic-show-parser-state-mode)
(add-to-list 'semantic-default-submodes 'global-semantic-highlight-edits-mode)
(semantic-mode 1)
(require 'semantic/ia)

(require 'semantic/bovine/clang)

;; PROJECTS

(global-ede-mode t)

(ede-cpp-root-project "MyProject"
                      :name "My Project"
                      :file "/path/to/project/Makefile"
                      :include-path '("/path/to/first/includes"
                                      "/path/to/second/include")
                      :system-include-path '()
                      :spp-table '())

每当我打开项目时,C-c . g我在迷你缓冲区Method project-rescan called on nil中出错,这导致我无法扫描所有源文件以进行自动完成。

我在这里做错了什么?

我一直试图关注Alex Ott的A Gentle Introduction to CEDET,但它似乎没有提到任何有关此错误的内容。

我也在集市上使用CEDET。

这就是我M-x cedet-version的样子。

CEDET Version:  2.0
                    Requested   File        Loaded
  Package           Version     Version     Version
  ----------------------------------------------------------
  cedet:            2.0         ok          ok
  eieio:            1.4         ok          ok
  semantic:         2.2         ok          ok
  srecode:          1.2         ok          ok
  ede:              1.2         ok          ok
  cogre:            1.2         ok          Not Loaded
  cedet-contrib:    1.2         nil         Not Loaded

非常感谢任何和所有帮助。

先谢谢!

1 个答案:

答案 0 :(得分:1)

绑定到C-c . g的键绑定ede-rescan-toplevel用于扫描项目定义数据,而不是用于解析源文件。由于ede-cpp-root-project在项目中没有定义数据,因此它从未实现过该功能。

如果您访问源文件,将根据需要解析该源文件。它还会根据需要找到您的包含和解析。此外,如果您只是稍等一下,它会在空闲时间内重新分析您正在编辑的文件附近的所有文件,这样当您需要它时,数据就应该存在。