如何为C++; 我一直在尝试为C++建立一个埃代项目(EMACS24+BuuGueCEDET),我开始变得绝望,因为我似乎找不到我想要生成MaX文件的方式。我对Emacs比较陌生。 我将尝试描述我正在做的事情:
我有一个这样的玩具项目:如何为C++; 我一直在尝试为C++建立一个埃代项目(EMACS24+BuuGueCEDET),我开始变得绝望,因为我似乎找不到我想要生成MaX文件的方式。我对Emacs比较陌生。 我将尝试描述我正在做的事情:,c++,emacs,cedet,emacs-semantic,C++,Emacs,Cedet,Emacs Semantic,我有一个这样的玩具项目: main.cpp other/ Utils.cpp Utils.h CGrabBuffer.cpp CGrabBuffer.h main.cpp包含“other/”目录中的两个.h。以下是使用此简单目录设置设置EDE项目的步骤: 在emacs中打开main.cpp并执行M-x ede new;类型:Make;名称:主项目 打开“其他”目录中的一个文件,然后执行M-x ede new;类型:Make;名称:辅助项目 现在是时候制定目标了(我认为在这种
main.cpp
other/
Utils.cpp
Utils.h
CGrabBuffer.cpp
CGrabBuffer.h
main.cpp包含“other/”目录中的两个.h。以下是使用此简单目录设置设置EDE项目的步骤:
- 在emacs中打开main.cpp并执行
;类型:M-x ede new
;名称:Make
主项目
- 打开“其他”目录中的一个文件,然后执行
;类型:M-x ede new
;名称:Make
辅助项目
- 现在是时候制定目标了(我认为在这种情况下有三个目标):
- 在main.cpp缓冲区上:
;名称:M-x ede新目标
;类型:main
。出现提示时,我将main.cpp添加到此目标程序
- 我对其他两个目标重复相同的操作(Utils包含Utils.cpp和Utils.h,以及CGrabBuffer包含CGrabBuffer.cpp和CGrabBuffer.h)。这里我发现了第一个问题。这两个目标必须是什么类型的?我只希望它们生成.o文件
- 在main.cpp缓冲区上:
- 完成后,我键入
M-x ede将当前目标自定义为所有三个目标,并添加一些include路径、一些库等
- 在此之后,如果我调用
,它不会编译,因为:M-x ede compile project
- 它首先尝试编译main.cpp;我不知道如何指定(使用EDE)在尝试构建main.cpp之前同时需要Utils.o和CGrabBuffer.o
- 如果我手动更改顺序(编辑Makefile),它将无法链接main.cpp,因为它找不到Utils.o和CGrabBuffer.o
编辑:通过一些修改和收到的回复,我已经能够理解很多东西,非常感谢。我仍然不明白的是ede cpp根项目的用法,它必须在.emacs文件中指定。它是C++语言的吗?把项目和project.el以及elisp行放在.emacs中是多余的吗?好吧,我想这次我已经弄明白了,但这很难看
Utils.cpp
和CGrabBuffer.cpp
不应获得各自的目标,因为似乎没有合适的目标类型。相反,您需要创建一个归档或库,它将自动为您编译Utils.cpp
和CGrabBuffer.cpp
。下面,我假设您想要静态的,但很容易更改
[对于那些不熟悉档案或库的人来说,他们基本上只是将.o
文件收集到一个单独的单元中。这实际上不会使编译变得更困难。请阅读更多信息。]
1) 遵循上面的前两个半步骤(包括创建main
目标,但不创建其他目标)
2) 切换到Utils.cpp和doM-x ede新目标
;名称:aux
;类型:存档
。出现提示时,将Utils.cpp添加到此目标
3) 切换到CGrabBuffer.cpp并执行C-C。a
;目标:aux
4) 使用M-x ede proj REGENATE
重新生成生成文件。此时,如果在other
子目录中运行make
,则应获得存档libaux.a
5) 切换回main.cpp并执行M-x ede自定义当前目标
。这将打开一个交互式emacs定制缓冲区,允许您编辑ede配置的详细信息。在Ldflags
部分下,单击[INS]
。这会弹出一个新行,上面写着链接标志:
,并且有一些不同颜色的框供您输入(我的是灰色的)。键入-Lother-laux
,以便在编译main
时包含other/libaux.a
。然后,在缓冲区的顶部,按[Accept]
,这将保存更改并切换回main.cpp
6) 使用M-x ede proj REGENATE
重新生成生成文件
现在,不幸的是,Makefile首先使main
成为目标,然后下降到other
目录并使其成为目标。不幸的是,这意味着顶级目录中的make不能在干净的树上工作。我不知道这是为什么,因为这似乎永远不会是你想要的任何项目,这是曾经与埃德。我找不到任何方法来改变这一点,除了这个黑客:
7) 做M-x定制项目
;在推理规则下
单击[INS]
。然后输入目标:all
;依赖项:aux-main
;规则:[INS]
;字符串@:
。(最后一个只是为了防止带有选项卡的空规则出错;可能是EDE错误。)单击[Accept]
,然后重新生成Makefiles
现在,在您的顶层目录中,您可以运行make,并且main
应该是一个工作的可执行文件
我很快就确信EDE还没有准备好被作者以外的人使用。尽管它的规模和努力程度,他们已经