我正在开发一个大型C++项目,使用了六个月的Emacs。我尝试配置CEDET以便能够轻松导航,但是遇到了一些问题。
1. 有时语义无法找到某些符号,有时它不会... 我不清楚语义索引哪些文件。 我尝试使用EDE(按照此文档中的说明http://alexott.net/en/writings/emacs-devenv/EmacsCedet.html),但我也遇到了一些问题...
- 我有同一项目的多个版本(发布),每个版本都在自己的文件夹中。如何告诉Emacs我正在使用哪个项目? - 如何告诉EDE在哪里查找我的头文件?我可以指定一个根目录吗?语义将在所有子目录中搜索头文件吗?
2. 以前我使用vim + cscope并记得有一种方法可以在符号堆栈中向后导航(Ctrl-t)。Emacs中是否有类似的功能?
注:以下是更多数据,以使问题更加清晰。
我有同一项目的多个版本。 每个版本都有自己的根目录。 每个项目有多个模块,每个模块都在一个子目录中。 每个模块中都有头文件。
这是我在 .emacs 文件中关于 EDE 的配置:
1. 有时语义无法找到某些符号,有时它不会... 我不清楚语义索引哪些文件。 我尝试使用EDE(按照此文档中的说明http://alexott.net/en/writings/emacs-devenv/EmacsCedet.html),但我也遇到了一些问题...
- 我有同一项目的多个版本(发布),每个版本都在自己的文件夹中。如何告诉Emacs我正在使用哪个项目? - 如何告诉EDE在哪里查找我的头文件?我可以指定一个根目录吗?语义将在所有子目录中搜索头文件吗?
2. 以前我使用vim + cscope并记得有一种方法可以在符号堆栈中向后导航(Ctrl-t)。Emacs中是否有类似的功能?
注:以下是更多数据,以使问题更加清晰。
我有同一项目的多个版本。 每个版本都有自己的根目录。 每个项目有多个模块,每个模块都在一个子目录中。 每个模块中都有头文件。
/home/user/
|
\Release-001
| |
| \makefile
| \ Module-001
| | |
| | \makefile
| | \subdir-001
| | | \header-001.h
| | | \header-002.h
| | \subdir-002
| | | \header-003.h
| \ Module-002
| | |
| | \makefile
| | \subdir-003
| | | \header-004.h
| | | \header-005.h
| | \subdir-004
| | | \header-006.h
|
\Release-002
| |
| \makefile
| \ Module-001
| | |
| | \makefile
| | \subdir-001
| | | \header-001.h
| | | \header-002.h
| | \subdir-002
| | | \header-003.h
| \ Module-002
| | |
| | \makefile
| | \subdir-003
| | | \header-004.h
| | | \header-005.h
| | \subdir-004
| | | \header-006.h
这是我在 .emacs 文件中关于 EDE 的配置:
;; Cedet load commands
(add-to-list 'load-path "~/emacs-dir/cedet/cedet")
(load-file "~/emacs-dir/cedet/cedet/common/cedet.el")
;; EDE: activating mode.
(global-ede-mode t)
;; Projects definition
(ede-cpp-root-project "Release-001"
:name "Release-001"
:file "~/Release-001/makefile"
:include-path '("/"
)
:system-include-path '("~/exp/include")
:spp-table '(("SUSE9" . "")
)
)
(ede-cpp-root-project "Release-002"
:name "Release-002"
:file "~/Release-002/makefile"
:include-path '("/"
)
:system-include-path '("~/exp/include")
:spp-table '(("SUSE9" . "")
)
)
提醒一下...我正在使用emacs的控制台版本(-nw)。