What's the recommended Eclipse CDT configuration for big C++ project (indexer takes forever)

纵然是瞬间 提交于 2019-12-18 11:53:03

问题


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?


回答1:


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.




回答2:


Using the Project resource filters helped me a lot. I removed from the project tree folders which I didn't want either to modify or to submit to indexing.

To create a new filter just right click on the project and then open the Properties panel then reach Resource -> Resource Filters

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

Sometimes if your project sources are too big (ex: about 5GB ) you need to use a filter otherwise the indexing process never end correctly.




回答3:


-Xss8g on eclipse.ini was also needed on Neon to prevent stack overflow.

Also consider ulimit -Sv unlimited.

Tested on Ubuntu 14.04.



来源:https://stackoverflow.com/questions/9565125/whats-the-recommended-eclipse-cdt-configuration-for-big-c-project-indexer-ta

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!