EMACS-DOCUMENT

=============>集思广益

简单几步将Emacs打造成为C++_IDE

我发明了一种快速又友好的解决方案.

该解决方案适用于Linux/OSX/Cygwin (应该也适用于Windows环境,但我不在Windows下作开发所以不确定).

只有很少量的配置. 你只需要安装 GNU Global 以及另外两个Emacs插件:

下面是步骤说明.

1 步骤1, 创建一个示例项目来作实验

假设我有两个目录 ~/proj1 以及 ~/proj2. 两个项目都会用到第三方库的C++头文件,这些头文件放在只读目录 /usr/include 中.

新建一个 ~/obj 目录来存放第三方库的索引文件.

mkdir -p ~/{proj1,proj2,obj}

~/proj2/lib.cpp 的内容为:

void proj2_hello(int a2, char* b2) {
}

~/proj1/main.cpp 的内容为:

void proj1_hello(int a1, char* b1) {
}

int main(int argc, char *argv[]) {
  return 0;
}

2 步骤2, 扫描C++代码并配置Emacs

在shell中运行下列代码来扫描代码Run below command in shell to scan code,

cd /usr/include && MAKEOBJDIRPREFIX=~/obj gtags -O && cd ~/proj1 && gtags && cd ~/proj2 && gtags

设置好相应的Emacs插件后(最简单的方法只需要把这些插件安装好就行了), 将下列代码插入到 ~/.emacs 中,

;; Please note `file-truename' must be used!
(setenv "GTAGSLIBPATH" (concat "/usr/include"
                               ":"
                               (file-truename "~/proj2")
                               ":"
                               (file-truename "~/proj1")))
(setenv "MAKEOBJDIRPREFIX" (file-truename "~/obj/"))
(setq company-backends '((company-dabbrev-code company-gtags)))

3 使用方法

就像平常那样使用Emacs就行了.

不过有一点要逐一,你需要安装8月25日之后编译的company,因为我昨天才修复了一个company的issue.

cpp-gtags-demo-nq8.png

4 技术细节(选读)

通过查阅 GNU Global manual 来搞清楚环境变量 GTAGSLIBPATHMAKEOBJDIRPREFIX 的意思.