Russian Qt Forum

Qt => Общие вопросы => Тема начата: 8Observer8 от Февраль 17, 2014, 07:05



Название: Конечный результат разработки ПО на Qt
Отправлено: 8Observer8 от Февраль 17, 2014, 07:05
Привет!

У меня нет полного понимания того, что является конечным результатом разработки ПО.

Выражу своё мнение. По ходу повествования написаны вопросы.

1. Исполняемый файл со статической сборкой. Создаётся один исполняемый файл, который весит, как минимум ~20 МБайт (для GUI-приложения). Запускается без каких либо зависимостей (к примеру, от libstdc++-6.dll, libgcc_s_dw2-1.dll, Qt5Core.dll, Qt5Gui.dll). Гарантировано - на любой машине. Для того чтобы создать статический exe-файл, нужно перекомпилировать библиотеку Qt в статическую сборку (по умолчанию библиотека динамическая). Далее из Qt Creator'а можно будет выбирать, как собрать разрабатываемое приложение: статически или динамически

Я знаком, только с ОС Windows, поэтому вопросы:

- Какое расширение у исполняемых файлов на Linux? В Linux все динамические библиотеки с расширением ".a"? Так?

- Какое расширение у исполняемых файлов на Mac OS? Какое расширение у динамических библиотек в Mac OS?

Как я понимаю, для Windows, Linux и Mac OS можно писать программы, которые достаточно перекомпилировать на соответствующей платформе, не меняя при этом код. Перекомпилировать этот код написанный для компьютера (для трёх ОС) под Android (и другие поддерживаемые мобильные платформы) мы не можем. Между мобильными платформами то же существует переносимость (с перекомпиляцией)? Какие мобильные платформы поддерживает Qt 5.2.0?

2. Исполняемый файл с динамической сборкой. Чтобы запустить приложение на другой машине, рядом с exe должны быть библиотеки, например, для GUI-приложения: libstdc++-6.dll, libgcc_s_dw2-1.dll, Qt5Core.dll, Qt5Gui.dll и т.д.

3. Классы. В этом случае продуктом разработчика будут: классы, документация (сгеренированная с помощью doxygen, в которой также есть диаграммы классов), тесты для методов-членов классов (тесты подтверждают требуемую функциональность классов)

4. Динамическая библиотека. Пока не знаю, как создавать динамическую библиотеку и обеспечить повторное использование её.

5. Статическая библиотека. Пока не знаю, как создавать статическую библиотеку и обеспечить повторное использование её.

6. Мастер установки (инсталятор). Скопирует все необходимые динамические (статические?) библиотеки в указанное пользователем место.

Что здесь неверно? Что пропустил? Как ещё может оформить разработчик результаты своего труда? Расскажите о своём опыте представления конечного результата своего труда пользователю (заказчику).

По мере познания и появления вопросов - буду здесь отписываться.

Заранее спасибо за ответы!


Название: Re: Конечный результат разработки ПО на Qt
Отправлено: Serr500 от Февраль 17, 2014, 08:39
Цитировать
Какое расширение у исполняемых файлов на Linux?
Вы не поверите - любое, в том числе его может не быть вообще.  ;) В Linux "исполняемость" файла определяется атрибутом "x". При этом для одних пользователей он может быть исполняемым, а для других - нет.  ;D

Цитировать
В Linux все динамические библиотеки с расширением ".a"?
Нет. Почти всегда ".so" или ".so" с версией (.so[.N[.N[.N]]], N - число). ".a" - это то же, что и .lib в Windows. Кстати, MinGW в Windows использует именно ".a" вместо ".lib".

Цитировать
У меня нет полного понимания того, что является конечным результатом разработки ПО.
Ответ на этот вопрос однозначен: то, что написано в техзадании!


Название: Re: Конечный результат разработки ПО на Qt
Отправлено: 8Observer8 от Февраль 17, 2014, 10:40
Цитировать
У меня нет полного понимания того, что является конечным результатом разработки ПО.
Ответ на этот вопрос однозначен: то, что написано в техзадании!

Спасибо большое за ответ! Какие по ТЗ могут быть варианты? Я их все перечислил?

Я разобрался, как создавать и использовать dll в Qt. Написал пошаговую инструкцию, для таких же новичков, как и я: http://www.prog.org.ru/topic_26558_0.html


Название: Re: Конечный результат разработки ПО на Qt
Отправлено: Serr500 от Февраль 17, 2014, 16:11
Какие по ТЗ могут быть варианты? Я их все перечислил?
Все варианты перечислить невозможно. Они зависят исключительно от идиотизма желаний заказчика. В целом, вроде бы, основные есть.


Название: Re: Конечный результат разработки ПО на Qt
Отправлено: 8Observer8 от Февраль 17, 2014, 16:18
В целом, вроде бы, основные есть.

Хорошо. Спасибо :)


Название: Re: Конечный результат разработки ПО на Qt
Отправлено: Igors от Февраль 17, 2014, 17:11
- Какое расширение у исполняемых файлов на Mac OS? Какое расширение у динамических библиотек в Mac OS?
dylib для библиотек. У самих исполняемых - обычно никакого. Вообще еще до расширения OSX опознает файл по типу ('APPL' для приложения). Но как правило приложение идет в виде bundle (расширение .app) - одна иконка, юзверь давит на нее - запуск. На самом деле это фолдер, внутри сидит сам "exe'шник" что очень удобно для всех


Название: Re: Конечный результат разработки ПО на Qt
Отправлено: 8Observer8 от Февраль 17, 2014, 18:25
Igors, спасибо большое :)


Название: Re: Конечный результат разработки ПО на Qt
Отправлено: lesav от Февраль 17, 2014, 19:46
1. Исполняемый файл со статической сборкой. Создаётся один исполняемый файл, который весит, как минимум ~20 МБайт (для GUI-приложения). Запускается без каких либо зависимостей (к примеру, от libstdc++-6.dll, libgcc_s_dw2-1.dll, Qt5Core.dll, Qt5Gui.dll).
Статическую сборку не считаю необходимой. И не вижу трудностей в зависимостях.
В статической сборке вижу один огромный, на мой взгляд, минус - отсутствие системы плагинов.

В Linux|Windows можно собирать пакеты rpm|deb|msi|exe для установки на конечных компьютерах|устройствах с полным отсутствием зависимостей (в одном пакете все необходимые библиотеки)

Вот пример таких изысканий для Windows (http://Lesav.ru/install-size.png)


Название: Re: Конечный результат разработки ПО на Qt
Отправлено: 8Observer8 от Февраль 18, 2014, 15:19
Статическую сборку не считаю необходимой. И не вижу трудностей в зависимостях.

Она необходима, если я хочу делиться с пользователями своими программками без установки. Как на этом сайте (сколько скачивал, всегда одним exe, может так выпадало): http://qt-apps.org/

Определить какие же dll нужны - для меня это сложно. Нет уверенности, что ещё что-то не понадобится на машине пользователя.

Например, чтобы запустить диалоговое приложение, мне понадобились вот эти dll (определял методом тыка):
icudt51.dll
icuin51.dll
icuuc51.dll
libgcc_s_dw2-1.dll
libstdc++-6.dll
libwinpthread-1.dll
Qt5Core.dll
Qt5Gui.dll
Qt5Widgets.dll

Если пакет делать, то как на 100% быть уверенным, что учёл все dll?

на мой взгляд, минус - отсутствие системы плагинов.
Поясните, пожалуйста, в друх словах, что такое плагины в Qt? Где они применяются?


Название: Re: Конечный результат разработки ПО на Qt
Отправлено: Igors от Февраль 18, 2014, 15:37
В статической сборке вижу один огромный, на мой взгляд, минус - отсутствие системы плагинов.
Вот. Давно хотел спросить, но неудобно было - нет времени сначала погуглить. Вопросы:

1) Есть плагины которые тоже хотят юзать Qt. Очень смутно представляю себе КАК если само приложение собрано статически с модулями Qt? Или такая возможность есть?

2) Приложение собрано динамически, но все dll лежат в определенном месте. Напр (для простоты) Qt dll в папке с exe-шником, а вот плагины - в другой. Как натравить плагины без "костылей" типа "setpath"?

Спасибо


Название: Re: Конечный результат разработки ПО на Qt
Отправлено: Bepec от Февраль 18, 2014, 15:58
1) никак скорее всего. Динамика будет искать же их в папке :)
2) есть файлик qt.conf. Он позволяет изменять пути :)
https://qt-project.org/doc/qt-5.0/qtdoc/qt-conf.html


Название: Re: Конечный результат разработки ПО на Qt
Отправлено: Vamireh от Март 04, 2014, 15:41
Извиняюсь за некропост.

Код:
Если пакет делать, то как на 100% быть уверенным, что учёл все dll?

Лично у меня есть в VirtualBox голая XP, если там запускается, то считаю, что учел все.


Название: Re: Конечный результат разработки ПО на Qt
Отправлено: 8Observer8 от Март 04, 2014, 15:43
Лично у меня есть в VirtualBox голая XP, если там запускается, то считаю, что учел все.

Спасибо большое! Тоже так буду делать :)


Название: Re: Конечный результат разработки ПО на Qt
Отправлено: OKTA от Март 04, 2014, 16:26
А еще есть Dependency Walker - помогает с либами.


Название: Re: Конечный результат разработки ПО на Qt
Отправлено: 8Observer8 от Март 04, 2014, 16:33
А еще есть Dependency Walker - помогает с либами.

Большое спасибо! Я её давно пробовал. Помню она не всё определяла. Может я ошибаюсь. Надо ещё попробовать :)