Я хочу программно добавить пути включения и определения макросов в проект CDT, используя точку расширения externalSettingsProvider, и я изо всех сил пытался найти руководство по основам, поэтому этот вопрос предназначен для этого.
Пока что я создал проект плагина, на вкладке расширений редактора плагина xml я добавляю расширение, чтобы плагин. 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
, он никогда не сработает. Возможно, мне нужно где-то зарегистрировать своего провайдера? Ни один из существующих сайтов, которые я нашел, не говорит вам, как это сделать.