Какая рекомендуемая конфигурация Eclipse CDT для большого проекта C ++ (индексатор работает вечно) - PullRequest
18 голосов
/ 05 марта 2012

Я работаю над некоторым унаследованным кодом C ++, написанным с использованием "vi" и "emacs", и пытаюсь создать установку eclipse CDT для ее поддержки (в linux).Две основные проблемы, с которыми я столкнулся, заключаются в том, что индексация занимает очень много времени (более 4 часов) и что даже после ее завершения затмение едва реагирует.

База кода структурирована на уровне "3-4"глубокий "способ:

/system/${category}/${library}/
/server/${serverName}/${component}/

Пример:

/system/CORE/CommandLine/*.cpp
/system/CORE/Connection/*.cpp
...
/server/Authentication/DB/Objects/*.cpp
/server/Authentication/Main/*.cpp

В каталоге / system / * содержится около 200" модулей ", в каталоге / server / Authentication / * - около 50" модулей ".Существует также удивительно запутанная система make с 20-летним стажем make-code , написанным людьми, которые хотели похвастаться своими способностями make: -)

До сих пор я пробовал два подхода

1) Два проекта cdt eclipse, а именно / system и / Authentication

2) Один проект cdt eclipse на «модуль», заканчивающийся +200 модулями.Я даже рассчитал зависимости между модулями.

В обоих подходах индексация занимает очень много времени.При подходе 1) Я получаю довольно много проблем с неразрешенными зависимостями.С подходом 2) eclipse едва реагирует, когда я нажимаю Ctrl + щелчок по функции, я могу пойти на кофе и вернуться, прежде чем он ответит ...

Кто-нибудь работал с такими большими проектами?Что вы предлагаете?

Ответы [ 3 ]

19 голосов
/ 09 марта 2012

Общая рекомендация заключается в том, чтобы предоставить больше оперативной памяти для Eclipse. Во-первых, вам нужно настроить файл конфигурации eclipse.ini, так как файл по умолчанию не подходит для больших проектов. Вот мой eclipse.ini файл:

-startup
plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.100.v20110502
-product
org.eclipse.epp.package.cpp.product
--launcher.defaultAction
openFile
--launcher.XXMaxPermSize
256M
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms512M 
-Xmx4096M 
-XX:PermSize=256M 
-XX:MaxPermSize=512M

Здесь я использовал -Xmx4096M для предоставления 4 ГБ ОЗУ.

Для повышения скорости отклика вам также необходимо настроить Ограничения кэша индексатора . Я рекомендую увеличить все параметры в 2-3 раза, в зависимости от размера проекта.

1 голос
/ 05 мая 2014

Использование Фильтров ресурсов проекта мне очень помогло. Я удалил из дерева проекта папки, которые не хотел ни изменять, ни отправлять на индексацию.

Чтобы создать новый фильтр, просто щелкните правой кнопкой мыши проект и откройте панель Свойства , затем выберите Ресурс -> Фильтры ресурсов

http://help.eclipse.org/helios/index.jsp?topic=/org.eclipse.platform.doc.user/concepts/resourcefilters.htm

Иногда, если источники вашего проекта слишком велики (например, около 5 ГБ), вам нужно использовать фильтр, иначе процесс индексации никогда не завершится правильно.

0 голосов

-Xss8g на eclipse.ini также требовалось на Neon для предотвращения переполнения стека.

Также рассмотрим ulimit -Sv unlimited.

Протестировано на Ubuntu 14.04.

...