Задать вопрос
ENargit
@ENargit

Как организовать сборку проекта на Java но с кусками нативного кода?

Добрый день!


Занимаюсь сейчас своим опен-сорс проектом Octclipse (плагин к Eclipse IDE для Octave), но сообщества пока нет, так что задам вопрос здесь.


Суть проблемы:

Есть проект, в основном написанный на Java, но для некоторых важных фич (консоль, дебаг, графики) требующий С++-кода. Проект я хочу поддерживать на разных платформах(Linux, Window, Mac) и архитектурах(32,64). Также хочется иметь поддержку разных версий Octave(на данный момент — 3.2.4, 3.4.3, 3.6.0). Итого для каждой комбинации получается туча библиотек, собирать которые очень неудобно.


Вопрос:

Есть ли у вас какие-нибудь идеи, как это организовать без излишних сложностей? Ниже я приведу варианты, о которых я думал — хотелось бы услышать и их оценку. Мне важен не столько технический аспект, сколько архитектурный.


Доп. информация:

0. Нативный код не простой, а оформляется в виде плагинов к октейву(по-моему, необходимо это только в случае с графиками). Значит, собирается он не GCC, а октейвовской командой mkoctfile.

1. Сейчас нативный код собирается с помощью AutoTools и только в Linux.

2. Java-код собирается с помощью Maven 3 и Tycho (это всё же плагин к эклипсу)


Варианты (и моё к ним отношение):

— даём пользователям код, просим собрать перед использованием (отпугнет половину пользователей)

— немного извращаемся, таскаем код вместе с плагином, при первом запуске плагина пытаемся вызвать mkoctfile и собрать нужные подпроекты (тяжело, но, вроде, реализуемо)

— отдельно собирать и предлагать доп. пакеты для каждой платформы, версии и дистрибутива(очень трудоёмко в поддержке и некрасиво)

— собирать нативные подпроекты и складывать их в эклипсовские фрагменты (соответственно, пользователи сразу будут получать готовую к употреблению среду, но придется сохранять скомпилированные пакеты в репозитории)


Был ли у кого-нибудь опыт по поддержке чего-то подобного? Посоветуйте, пожалуйста, как быть?
  • Вопрос задан
  • 3277 просмотров
Подписаться 2 Комментировать
Подписчики вопроса 2 К ответам на вопрос (3)