Я пытался настроить проект EDE для C++ (emacs24 + встроенный CEDET), и я начинаю впадать в отчаяние, потому что, похоже, не могу найти способ создания make-файлов. Я относительно новичок в Emacs. Я постараюсь описать, что я делаю:
У меня есть игрушечный проект:
main.cpp
other/
Utils.cpp
Utils.h
CGrabBuffer.cpp
CGrabBuffer.h
main.cpp включает оба файла .h в каталог «other/». Вот шаги, которые я выполняю, чтобы настроить проект EDE с этой простой настройкой каталога:
- Откройте main.cpp в emacs и выполните
M-x ede-new
; тип:Make
; имя:main-proj
. - Откройте один из файлов в «другом» каталоге и выполните
M-x ede-new
; тип:Make
; имя:aux-proj
. - Now it's time to create the targets (which I believe are three in this case):
- On the main.cpp buffer:
M-x ede-new-target
; name:main
; type:program
. When prompted, I add the main.cpp to this target. - Я повторяю то же самое для двух других целей (Utils с Utils.cpp и Utils.h и CGrabBuffer с CGrabBuffer.cpp и CGrabBuffer.h). Здесь я нахожу первую проблему. Какого типа должны быть эти две цели? Я только хочу, чтобы они генерировали файлы .o.
- On the main.cpp buffer:
- Как только это будет сделано, я наберу
M-x ede-customize-current-target
для всех трех целей и добавлю некоторые включаемые пути, некоторые библиотеки и т. д. - After this, if I call
M-x ede-compile-project
it doesn't compile because:- It tries to compile main.cpp first; I have no idea how to specify (using EDE) that both Utils.o and CGrabBuffer.o are needed before attempting to build main.cpp.
- Если я вручную изменю порядок (редактируя Makefile), он не сможет связать main.cpp, потому что не сможет найти Utils.o и CGrabBuffer.o.
Как видите, я в центре большого беспорядка. Может быть, я даже не понимаю, что означает «цель» в EDE. Я также читал о существовании ede-cpp-root-project, который необходимо указать внутри файла .emacs. Я не пробовал это, потому что я думаю, что это просто помогает с семантикой. Он не генерирует файлы Makefile, не так ли? Могу ли я иметь (или мне нужен) проект EDE, созданный с помощью Project.el, и то же самое с использованием ede-cpp-root-project для семантики? Или это лишнее?
Извините, если я неправильно понял много вещей, но я очень запутался, а то, что я новичок в emacs, усугубляет ситуацию. Спасибо за терпеливость!
РЕДАКТИРОВАТЬ: немного поработав и получив ответы, я смог разобраться во многих вещах, так что большое спасибо. Чего я до сих пор не понимаю, так это использования ede-cpp-root-project, который должен быть указан внутри файла .emacs. Это только для семантики С++? Является ли излишним иметь проект с Project.el, а также строки elisp в .emacs?