Russian Qt Forum

Qt => Установка, сборка, отладка, тестирование => Тема начата: eSKon от Июль 04, 2006, 07:00



Название: Перенос приложения QT на другую платформу
Отправлено: eSKon от Июль 04, 2006, 07:00
Вобщем проблема в следующем. Написал программу на QT в VS2003 для Windows. Теперь нужно:
1. Скомпилять программу на Linux/FreeBSD
2. Приготовить стандартный инсталлер для этих систем который инсталлирует не из исходников (имеется ввиду, что make install в данном случае наверное не подходит, или может и подходит, просто хотелось бы знать как это выглядит стандартно)
3. Скомпилять программу на MacOs в universal binary
4. Сделать инсталлер при помощи PackageMaker
Причем для двух последних операций желатьльно сделать makefile, который нужно просто запустить make-ом. У меня мака нет, нужно чтобы заказчик у себя просто запустил make

Если кто-что может подсказать по любому из пунктов помогите плиз, три месяца работы, заказчик грозит закрыть проект если я не откомпиляю под все платформы или хотя бы не сделаю что-то, что позволит ему самому откомпилять код без хлопот (уже стихами заговорил   :lol: )


Название: Перенос приложения QT на другую платформу
Отправлено: DenKor от Июль 04, 2006, 07:17
Пиши pro файл для своего проекта.
А далее как обычно
1. qmake program.pro
2. make release


Название: Перенос приложения QT на другую платформу
Отправлено: eSKon от Июль 04, 2006, 07:59
Да pro файл сгенерен при помощи VSIntegration, когда запучкаю qmake на freebsd он немного ругается:
Project MESSAGE: You are running qmake on a generated .pro file. This may not work!
Игнорирую запускаю make
Вот тут возникают проблемы. Во первых он почему то не может найти функции классов, объявленные в заголовках, но определенных после вызова в сишниках. Насколько я знаю если функция объявлена то место определения должно быть по барабану, но он перестает компилять на такой ситуации. Потом выдает всякие варнинги, когда я переопределяю виртуальные функции и не использую некоторые параметры. Т.е. надо подавить некоторые варнинги, насколько я понимаю. Вобщем читаю сейчас маны по гцц. А с маком вообще плохо дело - нужно кроме компиляции еще и инсталлер соорудить. Т.е. мне нужно чтобы qmake при генерации makefile добавлял в него еще вызов PackageMaker для создания инсталлера, а как сделать это не знаю


Название: Перенос приложения QT на другую платформу
Отправлено: Admin от Июль 04, 2006, 08:27
Инсталятор делается для каждой системы отдельно.
Скажем, для
Redhat - это RPM пакет
Debian - это DEB пакет

А qmake я не пользуюсь, так как мала гибкость.


Название: Перенос приложения QT на другую платформу
Отправлено: eSKon от Июль 04, 2006, 08:41
Конечно для каждой системы. Но для линуха и фрибзди пойдет и тар, для виндов деплоймент проект, проблема только с маком по сути. Что значит мала гибкость ? Т.е. нельзя туда запихнуть дополнительные этапы сборки ?


Название: Перенос приложения QT на другую платформу
Отправлено: Grigory от Июль 04, 2006, 08:53
можно использовать и qmake. Для make install есть специальный параметр INSTALLS+= имя_цели.
например:
Код:
unix{
        alib.path = $(LIBDIR)
        alib.files = libmyprogram.so.$$VERSION
        alib.extra = cp -df libmyprogram.so* $(INSTALL_ROOT)$(LIBDIR)
     }
INSTALLS += alib

  Но .pro файл лучше писать руками, поскольку в нем будут скорее всего завимые от операционной системы секции.
Но лучше все же для линукса написать rpm. Дока по созданию rpm (на русском вот здесь есть http://www.bog.pp.ru/work/rpm.html )


Название: Перенос приложения QT на другую платформу
Отправлено: Admin от Июль 04, 2006, 14:41
для линукса tar не пойдет
у каждой системы все по разному лежит


Название: Перенос приложения QT на другую платформу
Отправлено: eSKon от Июль 04, 2006, 15:08
Да самое неприятное, что клиента линукс и фрибздя вообще не интересуют. Только винды и мак. А с qmake я не совсем понял, path, files и extra это какие-то стандартные понимаемые qmake символы ?


Название: Перенос приложения QT на другую платформу
Отправлено: DenKor от Июль 05, 2006, 12:32
Читай руководство по qmake.
pro файл можно сделать самим qmake.

Имей ввиду, что при использовании qmake, make нужно прописывать пути компилятора,библиотек,определений в переменную path

Имей ввиду, что при использовании mac установка qt не тривиальное дело.
Что тебе мешает с помощью эмулятора поставить mac и самому сделать бинарник.


Название: Перенос приложения QT на другую платформу
Отправлено: eSKon от Июль 05, 2006, 18:26
Да совсем малое мешает - отсутствие эмулятора. PearPC не предлагать, он ни сети не имеет, ни программного обеспечения, и вообще никакой связи с внешним миром, поэтому исходники свои туда загрузить я не могу, а уж поставить XCode (это типа VS от Apple только бесплатный) тем более. Может есть какой другой эмулятор о котором я не знаю ?


Название: Перенос приложения QT на другую платформу
Отправлено: DenKor от Июль 05, 2006, 19:53
Microsoft Virtual PC for Mac 7  с mac компьютером.
Или например
http://forum.ru-board.com/topic.cgi?forum=66&topic=0030#15

Тут вопрос в том, что если твоему заказчику так нужен откомпилированный бинарник под mac os, что мешает ему на несколько дней предоставить тебе компьютер ?


Название: Перенос приложения QT на другую платформу
Отправлено: eSKon от Июль 05, 2006, 22:40
Virtual PC for Mac 7 ? Вообще-то мне как-раз нужен Virtual Mac for PC если таковой имеется. PC у меня реальный есть мне виртуальный не нужен. А насчет предоставить вобщем-то ему ничто не мешает кроме одной мелочи - он живет в штате Вирджиния а я в Новосибирске :) Вобщем угораздило меня по самое нехочу :)


Название: Перенос приложения QT на другую платформу
Отправлено: joktar от Июль 08, 2006, 01:01
А терминальный доступ к нему сделать никак?
Через туже VNC.


Название: Перенос приложения QT на другую платформу
Отправлено: eSKon от Июль 10, 2006, 07:32
Ну может на терминальный доступ уговорю. А вот как бы поотлаживаться ? Т.е. если какой-нибудь X-Server для виндов и чтобы с мака можно было на него подцепиться ? Вроде мак использует X Windows, по идее должен позволять подключение к удаленному X Server-ую


Название: Re: Перенос приложения QT на другую платформу
Отправлено: Alikus от Июль 12, 2006, 22:38
Цитата: "eSKon"
Сделать инсталлер при помощи PackageMaker
Советую посмотреть инсталлятор izPack писанный на java с исходниками. Ставиться будет в любой платформе где есть JVM :)


Название: Перенос приложения QT на другую платформу
Отправлено: Negative от Июль 13, 2006, 15:28
Цитата: "Admin"
для линукса tar не пойдет
у каждой системы все по разному лежит

ну и что?
да запросто положить продукт кужа-нить в /usr/lib/product_name или в /opt/product_name, многие коммерческие продукты так делают и нормально живут. конечно придется инсталлятор на шелле написать, но это не проблема