【发布时间】:2020-06-16 19:19:00
【问题描述】:
我想使用 externalSettingsProvider 扩展点以编程方式将包含路径和宏定义添加到 CDT 项目,并且我一直在努力寻找基础指南,所以这个问题旨在提供。
到目前为止,我已经创建了一个插件项目,在插件 xml 编辑器的扩展选项卡中,我添加了一个扩展,以便 plugin.xml 如下所示:
<plugin>
<extension
id="my_id"
name="Settings I want in the project"
point="org.eclipse.cdt.core.externalSettingsProvider">
<provider
class="com.example.MySettingsProvider">
</provider>
</extension>
</plugin>
然后我实现提到的类。这是我的实现示例:
public class MySettingsProvider extends CExternalSettingProvider {
@Override
public CExternalSetting[] getSettings(IProject project, ICConfigurationDescription cfg) {
final ArrayList<ICSettingEntry> allSettings = new ArrayList<ICSettingEntry>();
CMacroEntry myMacro = CDataUtil.createCMacroEntry("WINE_CHOICE", "WHITE", ICSettingEntry.NONE);
allSettings.add( myMacro );
CIncludePathEntry myInclude = CDataUtil.createCIncludePathEntry("path/to/include", ICSettingEntry.NONE);
allSettings.add( myInclude );
final ICSettingEntry[] settings = allSettings.toArray(new ICSettingEntry[allSettings.size()]);
return new CExternalSetting[]{new CExternalSetting(null, null, null, settings)};
}
}
这可能不是最好的方法 - 我愿意接受改进的反馈 - 但我认为它应该会导致一些设置可以添加到 CDT 项目中。
这是我摔倒的地方 - getSettings 永远不会被调用。我可以创建一个新的 CDT 项目,添加源文件并构建它们,但是如果我在 getSettings 方法中放置一个断点,它永远不会被命中。也许我需要在某个地方注册我的提供商?我发现的现有网站都没有告诉你如何克服这一点。
【问题讨论】:
标签: eclipse eclipse-cdt