我正在开发一个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 ++ General-&gt; Paths&amp; Symbols对话框或Project Explorer视图中。
我错过了任何更新()或刷新()吗?
答案 0 :(得分:0)
我知道这已经有3个月了,所以希望它仍然相关。
我的代码与您的代码看起来几乎完全相同,但是包含路径显示在属性 - > C / C ++一般 - &gt;路径和符号和工作中。所以我经历了每一行,我只能看到一个很大的不同:
为了构造一个新的CIncludePathEntry
,我传入的第一个参数是IFolder
,而不是String
,所以我使用的是另一个构造函数。我不确定你的程序的其余部分是如何构建的,但也许你可以调用IProject.getFolder(String)
并改为使用它。