web-dev-qa-db-ja.com

大きなC ++プロジェクトに推奨されるEclipseCDT構成は何ですか(インデクサーは永遠にかかります)

「vi」と「emacs」を使用して記述されたレガシーC++コードに取り組んでおり、それを維持するためにEclipse CDTセットアップを構築しようとしています(Linux上)。私が直面している2つの主な問題は、インデックス作成に非常に長い時間がかかること(4時間以上)と、それが終了してもEclipseがほとんど応答しないことです。

コードベースは、「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の「モジュール」があります。 20年分のmake-codeメイク能力を披露したい人によって書かれた驚くほど複雑なメイクシステムもあります:-)

これまでに2つのアプローチを試しました

1)2つのEclipse cdtプロジェクト、つまり/ systemと/ Authentication

2)「モジュール」ごとに1つのEclipse cdtプロジェクトが、最終的に+200モジュールになります。モジュール間の依存関係も計算しました。

どちらのアプローチでも、インデックス作成には非常に時間がかかります。アプローチ1)で、未解決の依存関係に関してかなりの数の問題が発生します。アプローチ2)Eclipseはほとんど応答しません。関数をCtrlキーを押しながらクリックすると、コーヒーを飲みに行って、応答する前に戻ることができます...

誰かがこのような大きなプロジェクトに取り組んだことがありますか?何を指示してるんですか?

18
krico

ここでの一般的な推奨事項は、Eclipse用にさらにRAMを提供することです。最初に、デフォルトの構成ファイルは大きなプロジェクトには適していないため、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を使用して4GbのRAMを提供しました。

応答性を向上させるには、 インデクサーキャッシュ制限 も構成する必要があります。プロジェクトのサイズに応じて、すべてのパラメーターを2〜3倍に増やすことをお勧めします。

19
ks1322

プロジェクトリソースフィルターを使用すると、非常に役立ちました。変更したくない、またはインデックス作成に送信したくないプロジェクトツリーフォルダーを削除しました。

新しいフィルターを作成するには、プロジェクトを右クリックしてプロパティパネルを開き、リソース->リソースにアクセスします。フィルタ

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

プロジェクトソースが大きすぎる場合(例:約5GB)、フィルターを使用する必要がある場合があります。そうしないと、インデックス作成プロセスが正しく終了しません。

1
Bemipefe

-Xss8g on Eclipse.iniは、スタックオーバーフローを防ぐためにNeonでも必要でした。

ulimit -Sv unlimitedも検討してください。

Ubuntu14.04でテスト済み。