3

プロジェクトにインクルード パスをプログラムで追加するための eclipse-java プラグインを開発しています。私が使用したコードの一部は次のとおりです。

String includePath = null;
ICProjectDescription projectDescription = CoreModel.getDefault().getProjectDescription(project, true);
ICConfigurationDescription configDecriptions[] = projectDescription.getConfigurations();
for (ICConfigurationDescription configDescription : configDecriptions) {
ICFolderDescription projectRoot = configDescription.getRootFolderDescription();
ICLanguageSetting[] settings = projectRoot.getLanguageSettings();
for (ICLanguageSetting setting : settings) {
    if (!"org.eclipse.cdt.core.gcc".equals(setting.getLanguageId())) {
    continue;
    }
    List<ICLanguageSettingEntry> includes = new ArrayList<ICLanguageSettingEntry>();
        includes.addAll(setting.getSettingEntriesList(ICSettingEntry.INCLUDE_PATH));
    for (int i = 0; i < tableViewer.getTable().getItemCount(); i++) {
        includePath = tableViewer.getTable().getItem(i).getText();
        includes.add(new CIncludePathEntry(includePath, ICSettingEntry.LOCAL));
    }
    setting.setSettingEntries(ICSettingEntry.INCLUDE_PATH, includes);
    }
}
CoreModel.getDefault().setProjectDescription(project, projectDescription);

ICLanguageSetting.getSettingEntries() から返された値を出力すると、インクルード パスが正常に追加されます。しかし、プロパティ -> C/C++ 全般 -> パスとシンボル ダイアログまたはプロジェクト エクスプローラー ビューには反映されません。

update() または refresh() がありませんか?

4

1 に答える 1

1

これが3か月経ったことはわかっているので、まだ関連性があることを願っています。

私のコードはあなたのコードとほぼ同じに見えますが、インクルード パスは [プロパティ] -> [C/C++General] -> [Paths&Symbols] に表示され、機能します。だから私は各行を調べましたが、私が見ることができる大きな違いは1つだけです:

newCIncludePathEntryを構築するために、渡す最初の引数はIFolderではなく であるStringため、別のコンストラクターを使用しています。プログラムの残りの部分がどのように構成されているかはわかりませんがIProject.getFolder(String)、代わりにそれを呼び出して操作することができます。

于 2013-01-11T16:12:59.697 に答える