Open Source & Linux Lab

It's better when it's simple

User Tools

Site Tools


etc:common_activities:slind:eclipse:existing_plugins:org_slind_ei_core

Плагин org.slind.ei.core

Реализуемые расширения

org.eclipse.cdt.managedbuilder.core.buildDefinitions

Определяет набр методов сборки проекта. Сложность самого описания очень велика. В глубь не полез. То что видно на верхнем уровне определено 3 типа проекта (exe, so, lib), для каждого есть конфигурации релиза и дебага, они аккуратно юзаю стандартные конфигурации CDT (cdt.managedbuild.config.gnu.base). В конфигурациях определены тулчайны, дополняющие главный(org.slind.ei.toolchain) некоторыми опцами. Сам главный тулчайн сводится к набору соответсвий типа “что нада сделать”-“комманда”. Комманды берутся из настроек плагина(см. п. 2), после чего передаются классу org.slind.ei.core.CommandLineGenerator. Если кратко: юзается то, что уже есть в CDT, просто переопределяются конкретные комманды (типа скомпилить, слинковать и т.п.), изврат через который это делается по-видимому обусловлен архитектурой CDT.

org.eclipse.core.runtime.preferences

Задаёт классы для работами с настройками плагина. Назначает класс org.slind.ei.core.preferences.PreferenceInitializer в качестве загрузчика дефолтных настроек для плагина (настройки типа: комманда чрута, путь к слайндовому чруту и т.п), использует классы SlindUtils и Constatnts (видимо эти классы нам и пригодятся ;)).

org.eclipse.cdt.managedbuilder.core.buildProperties

Пропертя для сборщика. По факту просто ключи для имен платформ по эклипсовым соглашениям и собственно их значения.

org.eclipse.core.resources.builders

Определяет сборщик. Назначает на эту роль org.slind.ei.core.SudoCallBuilder, работает похоже согласно названию, хотя несколько моментов в нём мне не понятны.
FIXME предлагаю zps глянуть на его код, думаю для постижения этого дао опыт компиляния под linux критичен.

org.eclipse.core.resources.natures

Очень интересное расширение, судя по всему задаёт тип проекта, и собственно прикручивает к нему все рюшки. Представляет собой объявление набора классов реализующих org.eclipse.core.resources.IProjectNature + набор параметров их заюзанья + зависимости от других натур. Слайндовая реализация натуры:org.slind.ei.core.SlindProjectNature, она только назначает проекту SudoCallBuilder и удаляет его при отключении от проекта.

org.eclipse.cdt.make.core.ScannerConfigurationDiscoveryProfile

Не понял что делает. Не понял что авторы CDT подразумевали под термином Scanner, в общем надо ещё разбираться :(
FIXME Штука в том числе зовёт

gcc -E -P -v -dD

и парсит вывод. Неплохоб понять что собственно вывод должен содержать.

Классы

org.slind.ei.core.preferences.PreferenceGetters

класс для получения настроект плагина, сокращает запись + не заблидушься в том что у кого брать :)

org.slind.ei.core.preferences.Constants

прошитые в виде констант имена настроек плагина.

org.slind.ei.core.SlindUtils

утилсы для получения всякой инфы о слайнде.

org.slind.ei.core.CommandLineGenerator

позволяет транслировать комманды, генерируемые CDT в комманды для исполнения внутри чрута. Реализует ацки сложный интерфейс, видимо для использования нами придёцца копипастить кусочек… ну или уговаривать сименсовцев творить рефакторинг ))

org.slind.ei.core.MacroSupplier

служит для представления настроек плагина в виде IBuildMacro, смысловая нагрузка которого судя по всему сводится к подстановке значений переменных в настройках комманд и путей для расширения org.eclipse.cdt.managedbuilder.core.buildDefinitions.
FIXME перенести каменты к классам из описания расширений сюда

Выводы

Данный плагин задаёт способы взаимодействия CDT со сдайндовым чрутом и компиляторами под целевые платформы, основная нагрузка на конфигурации плагина, классы носят вспомогательный характер, логики особой не несут и в основном служат для доступа к настройкам и убирают щели между классическими make, gcc и тем, что есть в слайнде. По моим ощущениям нам отсюда нужны только настройки путей и комманды.

etc/common_activities/slind/eclipse/existing_plugins/org_slind_ei_core.txt · Last modified: 2008/01/03 02:32 by 127.0.0.1