Russian Qt Forum
Ноябрь 23, 2024, 11:39 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Собственный дистрибутив Qt.  (Прочитано 15787 раз)
QCasper
Гость
« : Сентябрь 06, 2007, 08:22 »

У меня возникло желание создать собственный дистр Qt. То есть собрать один раз где-нить на одном компе, проинсталлить, запихнуть инсталляцию в NSIS, и потом когда я прихожу в другое место, и мне там позарез надо Qt (ну бывает Улыбающийся ), то не собирать все это заново 4 часа, а взять с флэшки мой 20-ти метровый дистр и все это дело быстренько установить. Я значит собрал, при сборке указав -prefix, чтобы потом оно мне установилось туда, и запихнул в NSIS. Но оказалось, что при сборке, в qmake жестко зашиваются пути к либам, плагинам и еще наверное к чему-нибудь. И причем не какой-нибудь путь, а тот, что был указан в -prefix. То есть если я на другой машине разверну этот дистрибутив по другому пути, он естественно работать не будет. По крайней мере от qmake точно придется отказаться. Поэтому, если вдруг кто знает, у меня вопрос, как тролли делают дистры, как их дистр при установке патчит qmake путями, которые юзер указал в инсталлере?
Записан
Вячеслав
Гость
« Ответ #1 : Сентябрь 06, 2007, 09:09 »

Ну речь похоже о форточках идет Подмигивающий А там subst никто не отменял Подмигивающий

cd :
md xxxQT
subst q: xxxQT

ну и убрать subst /d q:

Ы ?
Записан
QCasper
Гость
« Ответ #2 : Сентябрь 06, 2007, 10:22 »

Ну теоретически то может и выход, только не думаю, что тролли пользуются именно таким подходом.
Записан
vaprele07
Гость
« Ответ #3 : Сентябрь 06, 2007, 10:41 »

зы:
Цитировать
/*
   1) environment variable QMAKEFEATURES (as separated by colons)
   2) property variable QMAKEFEATURES (as separated by colons)
   3) <project_root> (where .qmake.cache lives) + FEATURES_DIR
   4) environment variable QMAKEPATH (as separated by colons) + /mkspecs/FEATURES_DIR
   5) your QMAKESPEC/features dir
   6) your data_install/mkspecs/FEATURES_DIR
   7) your QMAKESPEC/../FEATURES_DIR dir

   FEATURES_DIR is defined as:

   1) features/(unix|win32|macx)/
   2) features/
*/
Записан
Tonal
Гость
« Ответ #4 : Сентябрь 06, 2007, 12:57 »

Почитай про qt.conf
Записан
QCasper
Гость
« Ответ #5 : Сентябрь 27, 2007, 13:02 »

зы:
Цитировать
/*
   1) environment variable QMAKEFEATURES (as separated by colons)
   2) property variable QMAKEFEATURES (as separated by colons)
   3) <project_root> (where .qmake.cache lives) + FEATURES_DIR
   4) environment variable QMAKEPATH (as separated by colons) + /mkspecs/FEATURES_DIR
   5) your QMAKESPEC/features dir
   6) your data_install/mkspecs/FEATURES_DIR
   7) your QMAKESPEC/../FEATURES_DIR dir

   FEATURES_DIR is defined as:

   1) features/(unix|win32|macx)/
   2) features/
*/

Не понятно, что Вы этим хотите сказать...

Почитай про qt.conf

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

Еще раз повторю. Имеем дистрибутив вида qt-win-opensource-4.3.1-mingw.exe. Берем и устанавливаем его, туда, куда хотим, например в d:\qt\4.3.1-opensource. После чего идем в d:\qt\4.3.1-opensource\bin и запускаем qmake с опцией -v. Вот что мы видим на выходе:

Цитировать
QMake version 2.01a
Using Qt version 4.3.1 in d:\qt\4.3.1-opensource\lib

Вся фишка в том, что путь d:\qt\4.3.1-opensource прошит прямо в qmake.exe. И сделано это на этапе инсталляции, т.к. заранее этого сделано быть не могло ввиду того, что откуда троллям знать куда мне все это взбредет проинсталлить? Вот вопрос именно в этом и заключается, что же там такое происходит на этапе инсталляции, что путь который я руками ввел при установке, оказывается прошитым в qmake.exe?
Записан
vaprele07
Гость
« Ответ #6 : Сентябрь 27, 2007, 13:24 »

это переменные среды, которыми пользуется qmake для нахождения mkspecs, в которой как известно лежат настройки для отдельных компилятором + пути к инклудам, либам, етц.
Записан
QCasper
Гость
« Ответ #7 : Сентябрь 27, 2007, 13:47 »

это переменные среды, которыми пользуется qmake для нахождения mkspecs, в которой как известно лежат настройки для отдельных компилятором + пути к инклудам, либам, етц.

Понятно. Но все же при создании дистрибутива подобного qt-win-opensource-4.3.1-mingw.exe тролли используют не этот подход.
Записан
mks56
Гость
« Ответ #8 : Октябрь 02, 2007, 08:59 »

To QCasper

Если внимательно посмотреть на детали процесса инсталляции Qt из exe-файла, то Вы увидите, что в конце инсталляции происходит патчинг, в процессе которого в НУЖНЫХ местах правятся пути.
Записан
QCasper
Гость
« Ответ #9 : Октябрь 02, 2007, 10:04 »

To QCasper

Если внимательно посмотреть на детали процесса инсталляции Qt из exe-файла, то Вы увидите, что в конце инсталляции происходит патчинг, в процессе которого в НУЖНЫХ местах правятся пути.

Нашел строку "Patching paths in qmake...". В принципе, ничего в этом удивительного нет, понятное дело что оно как-то патчится. Вопрос стоит как?
« Последнее редактирование: Октябрь 02, 2007, 10:51 от QCasper » Записан
QCasper
Гость
« Ответ #10 : Октябрь 03, 2007, 08:48 »

Все еще актуально...
Записан
mks56
Гость
« Ответ #11 : Октябрь 04, 2007, 07:00 »

To QCasper

Очевидно, патчатся бинарные файлы. В qmake.exe примерно на 96% от начала файла имеются строки типа qt_prfxpath=... и много других
Записан
QCasper
Гость
« Ответ #12 : Октябрь 04, 2007, 08:28 »

To QCasper

Очевидно, патчатся бинарные файлы. В qmake.exe примерно на 96% от начала файла имеются строки типа qt_prfxpath=... и много других

Спасибо, я в курсе. Только это не дает ответа на вопрос, как значения этих строк изменить.
Их там не много, а ровно 10:

qt_prfxpath=F:\qt\4.3.1-g++
qt_docspath=F:\qt\4.3.1-g++\doc
qt_hdrspath=F:\qt\4.3.1-g++\include
qt_libspath=F:\qt\4.3.1-g++\lib
qt_binspath=F:\qt\4.3.1-g++\bin
qt_plugpath=F:\qt\4.3.1-g++\plugins
qt_datapath=F:\qt\4.3.1-g++
qt_trnspath=F:\qt\4.3.1-g++\translations
qt_xmplpath=F:\qt\4.3.1-g++\examples
qt_demopath=F:\qt\4.3.1-g++\demos
« Последнее редактирование: Октябрь 04, 2007, 08:29 от QCasper » Записан
mks56
Гость
« Ответ #13 : Октябрь 04, 2007, 08:54 »

To QCasper

Там эти строки завершаются огромным количеством нулей, поэтому наверное можно написать программку, которая открывает файл qmake.exe в бинарном режиме, ищет нужную сигнатуру и правит информацию после нее на нужную и добаляет нужное число нулей. Может получится...
Записан
QCasper
Гость
« Ответ #14 : Октябрь 04, 2007, 09:39 »

To QCasper

Там эти строки завершаются огромным количеством нулей, поэтому наверное можно написать программку, которая открывает файл qmake.exe в бинарном режиме, ищет нужную сигнатуру и правит информацию после нее на нужную и добаляет нужное число нулей. Может получится...

Я писал программу, которая просто заменяет эти строки на нужные мне, qmake после этого вообще вылетал с ошибкой. А Вы стало быть предлагаете, заменить и изменить количество нулей на разницу между строками?
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.049 секунд. Запросов: 21.