Какая рекомендуемая конфигурация CDT Eclipse для большого проекта С++ (индексатор берет навсегда)
Я работаю над некоторым унаследованным кодом на С++, написанным с использованием "vi" и "emacs", и я пытаюсь создать настройку CDT eclipse для ее поддержки (в 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 "модулей" и около 50 под /server/Authentication/ *.
Существует также удивительно запутанная система make с 20-летней стоимостью make-кода, написанная людьми, которые хотели продемонстрировать свои способности: -)
Я уже пробовал два подхода
1) Два проекта eclipse cdt, а именно /system и/Authentication
2) Один проект eclipse cdt на "модуль", заканчивающийся +200 модулями. Я даже вычислял зависимости между модулями.
В обоих подходах индексация занимает очень много времени. При подходе 1) я получаю довольно много проблем с нерешенными зависимостями. С приближением 2) затмение едва реагирует, когда я нажимаю Ctrl + щелкаю функцию, я могу пойти на кофе и вернуться, прежде чем он откликнется...
Кто-нибудь там работал с такими крупными проектами? Что вы предлагаете?
Ответы
Ответ 1
Общая рекомендация здесь - предоставить больше ОЗУ для 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 раза, в зависимости от размера проекта.
Ответ 2
Использование фильтров ресурса Project мне очень помогло.
Я удалил из папок дерева проектов, которые я не хотел изменять или представлять для индексирования.
Чтобы создать новый фильтр, просто щелкните правой кнопкой мыши по проекту, а затем откройте панель Свойства, затем выберите Ресурс → Фильтры ресурсов
http://help.eclipse.org/helios/index.jsp?topic=/org.eclipse.platform.doc.user/concepts/resourcefilters.htm
Иногда, если ваши источники проекта слишком большие (например, около 5 ГБ), вам нужно использовать фильтр, иначе процесс индексирования никогда не закончится правильно.
Ответ 3
-Xss8g
на eclipse.ini
также понадобился для Neon для предотвращения.
Также рассмотрим ulimit -Sv unlimited
.
Протестировано на Ubuntu 14.04.