I'm working on some legacy C++ code written using "vi" and "emacs" and I am trying to build an eclipse CDT setup to maintain it (on linux). The two main problems I've been facing are that the indexing takes very long (over 4h) and that even once that's finished, eclipse is barely responsive.
The code base is structured in a "3-4 level deep" manner:
/system/${category}/${library}/
/server/${serverName}/${component}/
Example:
/system/CORE/CommandLine/*.cpp
/system/CORE/Connection/*.cpp
...
/server/Authentication/DB/Objects/*.cpp
/server/Authentication/Main/*.cpp
There are about 200 "modules" under /system/* and around 50 under /server/Authentication/*. There is also an amazingly convoluted make system with 20 years worth of make-code written by people who wanted to showoff their make abilities :-)
I've tried two approaches so far
1) Two eclipse cdt projects, namely /system and /Authentication
2) One eclipse cdt project per "module" ending up with +200 modules. I even calculated dependencies between modules.
In both approaches, indexing takes very long. On approach 1) I get quite a few problems with non-resolved dependencies. With approach 2) eclipse is barely responsive, when I ctrl+click a function I can go for a coffee and come back before it responds...
Anyone out there has worked with big projects like these? What do you suggest?
General recommendation here is to provide more RAM for Eclipse. First, you will need to tweak your eclipse.ini
configuration file as the default one is not suitable for big projects. Here is my eclipse.ini
file:
-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
Here I used -Xmx4096M
to provide 4Gb of RAM.
To improve responsiveness you will also need to configure Indexer Cache limits. I recommend to increase all parameters by 2-3 times, depending on project size.