プロジェクトにインクルード パスをプログラムで追加するための 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() がありませんか?