Я следую найденным шагам здесь , чтобы попытаться добавить параметры сборки в файлы в существующих проектах Eclipse CDT с помощью точки расширения LanguageSettingsProvider, но мой поставщик настроек, похоже, не отображается в пользовательском интерфейсе, и его методы не запрашиваются для настроек.
Ранее мне удавалось добавить настройки в проект с помощью внешнего провайдера настроек , но я не смог найти способ добавить файл -specifi c settings .
Я реализовал подкласс LanguageSettingsSerializableProvider (назовем его MyProvider) и добавил его в мой плагин. xml, таким образом:
<extension
point="org.eclipse.cdt.core.LanguageSettingsProvider">
<provider
class="com.example.MyProvider"
id="MyProvider_id"
name="I would like to see this in the UI">
<language-scope id="org.eclipse.cdt.core.gcc"/>
<language-scope id="org.eclipse.cdt.core.g++"/>
</provider>
</extension>
Класс реализован примерно так:
public class MyProvider
extends LanguageSettingsSerializableProvider
implements ILanguageSettingsProvider,
IResourceChangeListener,
ILanguageSettingsEditableProvider,
ILanguageSettingsBroadcastingProvider {
/** The ID of this settings provider */
public static final String MY_PROVIDER_ID = "MyProvider_id"; //$NON-NLS-
/**
* Constructor. Initialises super class with appropriate values.
*/
public MyProvider() {
super( MY_PROVIDER_ID , Messages.UiLabel );
}
@Override
public String getId() {
return MY_PROVIDER_ID ;
}
@Override
public String getName() {
return Messages.UiLabel;
}
@Override
public List<ICLanguageSettingEntry> getSettingEntries(ICConfigurationDescription cfgDescription, IResource resource, String languageId) {
//breakpoint on this line that never gets hit...
return super.getSettingEntries( cfgDescription, resource, languageId );
}
...
}
Реальная реализация содержит некоторые другие логи c для фактического создания записей настроек, включая регистрацию себя в качестве слушателя изменения ресурса. Код resourceChanged
работает нормально, вызывает setSettingsEntries
, а затем serializeSettings
. Однако getSettingEntries
никогда не вызывается для получения этих настроек.
Есть что-то, чего мне не хватает?
Я предполагаю, что плагин. xml отсутствует что-то, но я не уверен, что. В различных интерфейсах, которые реализует класс, есть параграфы руководства, но один простой рабочий пример будет стоить больше тысячи слов. Я попытался посмотреть на xml для встроенных провайдеров настроек (например, GCCBuiltinCompilerSettingsMinGW
), но они определены вместе со многими другими частями CDT, и трудно сказать, какие биты имеют отношение к моему использованию случай.