![]() |
Модераторы: xvr |
![]() ![]() ![]() |
|
kamre |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 330 Регистрация: 24.3.2006 Репутация: 1 Всего: 13 |
Пытаюсь разобраться с тем, можно ли из Emacs сделать удобную среду разработки на C++. Т.к. удобства для всех нужны разные, то напишу про те, которые мне кажутся самыми необходимыми. И так есть ли в нем следующие вещи:
1) Понятие проекта: какие файлы выступают в качестве исходников, какие подключены заголовки из разных библиотек, какие есть конфигурации для сборки. Зачем это нужно? Чтобы уметь делать поиск только среди файлов, которые используются в проекте, а не по всей файловой системе. Чтобы выбирать конфигурацию для сборки и запускать ее одной командой (комбинацией клавиш). 2) Навигация по коду. Имеется ввиду переход от места использования к месту определения. Т.е. для переменных нужно переходить к месту их определения, а от места вызова функции к месту ее определения (в h или cpp файле). Например, пусть имеется в исходном файле выражение: obj->func(). Нужно чтобы была возможность перейти сразу к месту, где определяется переменная obj, а также перейти к определению функции func(), в зависимости от того, на каком месте находится сейчас курсор. 3) Выявление мест, в которых используется переменная или вызывается функция. Т.е. нахождения всех references для чего-либо в исходных файлах. Как пример: есть функция SomeClass::Func(), вот нужно найти все места, где эта функция вызывается. 4) Code completion (IntelliSense). Это часто нужно, когда в проекте используетс какая-то большая внешняя библиотека или когда сам проект большой и разбит на библиотеки. Т.е. имеется ввиду появление подсказки по функциям в классе, когда набирается obj-> или obj. 5) Отладчик. Возможность пошаговой работы программы с просмотром значений переменных. Установка breakpoint, в том числе условных. В каком-то виде все эти возможности есть в таких средах разработки, как Visual Studio + Visual Assist, Visual Slick Edit, Eclipse + CDT. Вопрос такой, можно ли настроить Emacs так, чтобы эти вещи в нем появились и заработали? Или же Emacs - это просто удобный редактор текста с подсветкой синтаксиса? |
|||
|
||||
Дмитрий Т |
|
||||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 93 Регистрация: 16.3.2005 Где: Самара Репутация: нет Всего: 4 |
Я программирую в vim и поскольку emacs более функционален, то можете быть уверены что в нём не хуже ;)
Из vim я запускаю компиляцию проекта и тут же перемещаюсь по найденным ошибкам. Вам надо разобраться с работой make и ctags, а желательно и с системой automake, autoconf.
В vim это есть, но не так симпатично и удобно как в Visual Studio.
Вам надо изучить отладчик gdb. Из vim я его не запускал. Кстати рекомендую при программировании сразу писать тесты или использовать какую-нибудь тестирующую систему - отладчик станет практически невостребованным, а нервы здоровыми.
Не только редактор это однозначно, поскольку в нём встроен язык программирования и с его помощью под emacs запускаются и почтовые клиенты и игрульки, а главное созданы режимы редактирования (в зависимости от типа файла emacs приобретает дополнительные способности). Почему я сам не на emacs? Когда выбирал, то соблазнился на нетребовательность к ресурсам vim, а сейчас пока нет времени переучиться. Что не нравится в emacs? Меня не привлекает его встроенный lisp по эстетическим соображениям, я бы предпочёл python. Ещё не нравится, что он как бы тормозит в развитии... то есть вид у него старомодный - я имею ввиду графические библиотеки (у меня он под gtk 1, а vim под gtk 2). Если подумаете что рекламирую vim, то ошибётесь - у него достаточно недочётов и я его обязательно сменю. Если у вас не пойдёт emacs, то попробуйте kdevelop - я на нём пробовал программировать, вполне вменяемый программный продукт со своими минусами и плюсами. |
||||||||
|
|||||||||
vinick |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 285 Регистрация: 9.6.2005 Репутация: 4 Всего: 22 |
1 - теоретически можно, но почему-то это до сих пор никто не сделал. Наверно никому из пользователей Emacs это не требуется?... ;) 2 - Emacs это не редактор. Это почти операционная система, в нем нет только умывальника и нормальной IDE. Что-то из того что вы запросили так или иначе реализовано, что-то требует доработки напильником. Есть etags, EDE, ECB, EAssist, semantic ,Xrefactory. Подробности смотрите на emacswiki.org, начать можно здесь По поводу отладчика - в линукс ИМХО существует только один отладчик - gdb. Все остальное это графические оболочки над ним. В Emacs есть режим gdb, в котором доступны все его команды и условные точки останова в том числе. А лучше используйте SlickEdit, Eclipse, KDevelop |
|||
|
||||
kamre |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 330 Регистрация: 24.3.2006 Репутация: 1 Всего: 13 |
Т.е. получается, что Emacs-еры или не программируют на C++, или у них нет всех перечисленных удобных вещей? Пока я разбирался только с etags и ebrowse, они сразу с Emacs поставились. Честно говоря, вообще не впечатляют, для C++ плохо подходят. Вроде бы ebrowse для C++ писался, но в нем все равно не удобно передвигаться по коду. Такое впечатление, что они работают с исходником как с простым текстом и метками в нем. Т.е. не учитывают контекста, правила для scope, т.е. вообще не "понимают" язык... С cedet пока вообще не разобрался, не понимаю даже как его правильно ставить и настраивать. Да и пишут про него, что сырой и плохо работает. С gdb немного разобрался, но как-то все это не очень удобно пока кажется. Хотя интеграция с Emacs есть хоть какая-то, все удобнее, чем совсем из консоли запускать. Похоже, что Emacs для разработки на C++ не очень подходит. Буду теперь смотреть Eclipse более внимательно, хоть и "тяжелый" он, но куда более на IDE похож, и CDT вроде код "понимает" |
|||
|
||||
powerfox |
|
||||
![]() I wanna fork() ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3990 Регистрация: 1.10.2005 Где: Санкт-Петербург Репутация: 5 Всего: 97 |
Есть kgdb - фронт-энд в gdb. Довольно удобная штука, правда, мне приходилось хардкорно дебажить всего несколько раз.
kate наше всё ![]() Добавлено через 39 секунд Или KDevelop. Но мне всегда хватало kate. |
||||
|
|||||
CyClon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 838 Регистрация: 3.12.2005 Репутация: нет Всего: 4 |
GVIM решает, имхо
![]() ![]() |
|||
|
||||
kamre |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 330 Регистрация: 24.3.2006 Репутация: 1 Всего: 13 |
То что VIM/GVIM решает - это здорово ![]() А расскажите тогда, как в правильно "выстроганом" GVIMe выглдят в итоге все эти вещи (1-5). И есть ли уже "выстроганные" заготовки для всего этого? Или GVIM тоже не "понимает" языка, на котором пишется программа и может работать с исходниками только как с простым текстом? |
|||
|
||||
popovb |
|
||||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 14.2.2008 Репутация: нет Всего: нет |
Да ты не парься. Возьми, да попробуй. До уровня VS не доточишь. А нужно ли? |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "С/С++: Программирование под Unix/Linux" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |