我一直在尝试为 C++(emacs24 + 内置 CEDET)设置一个 EDE 项目,但我开始感到绝望,因为我似乎找不到想要生成 makefile 的方式。我对 Emacs 比较陌生。我将尝试描述我在做什么:
我有一个这样的玩具项目:
main.cpp
other/
Utils.cpp
Utils.h
CGrabBuffer.cpp
CGrabBuffer.h
main.cpp 在“other/”目录中包含两个 .h。这些是我使用这个简单的目录设置来设置 EDE 项目的步骤:
- 在 emacs 中打开 main.cpp 并执行
M-x ede-new
;类型:Make
; 名称:main-proj
。 - 打开“其他”目录中的一个文件并执行
M-x ede-new
;类型:Make
; 名称:aux-proj
。 - 现在是创建目标的时候了(我相信在这种情况下是三个):
- 在 main.cpp 缓冲区:
M-x ede-new-target
; 名称:main
; 类型:program
。出现提示时,我将 main.cpp 添加到此目标。 - 我对其他两个目标(具有 Utils.cpp 和 Utils.h 的 Utils 和具有 CGrabBuffer.cpp 和 CGrabBuffer.h 的 CGrabBuffer )重复相同的操作。在这里,我发现了第一个问题。这两个目标必须是什么类型?我只希望他们生成 .o 文件。
- 在 main.cpp 缓冲区:
- 完成后,我键入
M-x ede-customize-current-target
所有三个目标,并添加一些包含路径、一些库等。 - 在此之后,如果我调用
M-x ede-compile-project
它不会编译,因为:- 它首先尝试编译 main.cpp;在尝试构建 main.cpp 之前,我不知道如何指定(使用 EDE)Utils.o 和 CGrabBuffer.o 都需要。
- 如果我手动更改顺序(编辑 Makefile),它无法链接 main.cpp,因为它找不到 Utils.o 和 CGrabBuffer.o。
正如你所看到的,我正处于一团糟之中。也许我什至不理解 EDE 中的“目标”是什么意思。我还阅读了必须在 .emacs 文件中指定的 ede-cpp-root-project 的存在。我没有尝试过,因为我认为它只是帮助语义。它不会生成 Makefile,是吗?我可以拥有(或者我是否需要)一个使用 Project.el 构建的 EDE 项目,以及使用 ede-cpp-root-project 的语义相同的东西吗?或者是多余的?
抱歉,如果我误解了很多东西,但我很困惑,并且刚接触 emacs 会让事情变得更糟。谢谢你的耐心!
编辑:通过一些修补和我收到的回复,我已经能够弄清楚很多东西,所以非常感谢。我仍然不明白的是必须在 .emacs 文件中指定的 ede-cpp-root-project 的使用。它只是为了c ++语义吗?使用 Project.el 的项目以及 .emacs 中的 elisp 行是否是多余的?