Кто-нибудь знает о хорошей структуре разработки программного обеспечения или о том, что имеет следующие свойства?
- Кросс-платформа: она должна запускаться на XP, Vista, OSX и общих версиях Linux (таких как Ubuntu и Kubuntu).
- Нет установки: иметь возможность запускать программное обеспечение с USB-накопителя без необходимости копировать что-либо на хост-машину.
- Хорошая поддержка графического интерфейса (вот почему этот вопрос не дает подходящего ответа, насколько я могу судить).
- Разрешительное лицензирование, такое как LGPL или BSD или таковое.
Среди более мягких требований есть набор абстракций для наиболее распространенных функциональных возможностей бэкэнд, таких как сокеты, файл IO и т.д. (Обычно требуется адаптация определенной платформы) и поддержка хорошего языка, такого как Python или С++, хотя обычно интересно изучить новый (т.е. Не perl).
Я думаю, что потенциальными кандидатами являются Qt 4.5 или выше (но программное обеспечение IFAIK Qt не будет работать на Vista без какой-либо установки (?)), некоторые wxWidgets или, возможно, решение wxPython, возможно, gtkmm. Приведенные мной примеры потерпели неудачу по тем или иным требованиям. Это не означает, что таких примеров не существует, это просто означает, что я их не нашел. Поэтому мне было интересно, знают ли кто-нибудь о существующих решениях для этого?
Некоторые пояснения;
- Под "framework" я подразумеваю нечто вроде Qt или gtkmm или python с пакетом виджета.
- Речь идет о возможности запуска готового продукта на нескольких платформах, с палки, без установки, а не в переносной среде разработки.
- Это не загрузочная палочка.
- При необходимости можно создавать программное обеспечение специально для разных целей.
Случай использования, который я вижу, заключается в том, что у вас есть какое-то программное обеспечение, на которое вы полагаетесь (например, планирование проекта, администрирование информации, инструменты анализа или аналогичные), которые:
- не полагается на доступность интернет-соединения.
- запускается на разных хост-машинах, где не совсем нормально устанавливать что-либо.
- перемещается пользователем через физический носитель (например, USB-накопитель).
- запускается на разных операционных системах, таких как Windows, Vista, Ubuntu, OSX.
- работает с одними и теми же данными на этих разных хостах (данные могут храниться на хосте или на палке).
- на самом деле не ограничивается тем, насколько велика связанная структура (если это не несколько гигабайт, что на самом деле не реально).
Также хорошо иметь параллельные установки на палочке, пока программное обеспечение ведет себя одинаково и может работать с одними и теми же данными при работе на разных целевых объектах.
По-другому взглянуть на вариант использования будет то, что у меня есть пять новых установленных машин с Vista, XP, OSX, Ubuntu и Kubuntu, соответственно, передо мной. Я хотел бы, не устанавливая ничего нового на машинах, иметь возможность запускать одно и то же программное обеспечение с одного USB-накопителя (отвечающего вышеуказанным требованиям GUI и т.д.) На каждой из этих пяти машин (хотя, при необходимости, с разных пучки на палочке).
Возможно ли это?
Изменить: Я немного экспериментировал с приложением Qt, которое использует некоторые виджеты и базу данных sqlite. Легко было заставить его работать на ubuntu dist и osx. Для windows xp и vista мне пришлось скопировать QtCored4.dll, QtGuid4.dll, QtSqld4.dll и mingwm10.dll в каталог распространения (это был код отладки), и я скопировал файл qsqlited4.dll в папку с именем "sqldrivers" в дистрибутиве каталог.