Russian Qt Forum

Qt => Установка, сборка, отладка, тестирование => Тема начата: flame от Март 12, 2011, 23:21



Название: Сборка qt в другую папку
Отправлено: flame от Март 12, 2011, 23:21
Подскажите, никак не могу разобраться как мне статически собрать QT в другую папку. Я хочу чтобы я мог в creator'e выбирать сборку статически и динамически. Чтобы так можно было делать нужно иметь две разных библиотеки кт - динамическую и статическую. пытаюсь собрать динамическую в отдельную папку.

Порядок действий:

1. Ставлю qt-sdk-win-opensource-2010.05.exe в C:\Qt\2010.05
2. Запускаю Qt Command Prompt из меню пуск
3. C:\Qt\2010.05\qt>configure -static -prefix C:\Qt\static 
4. C:\Qt\2010.05\qt>mingw32-make

на это он мне выводит:
C:/Qt/2010.05/qt/bin/qmake C:/Qt/2010.05/qt//projects.pro  -o Makefile -spec win32-g++
Could not find mkspecs for your QMAKESPEC(win32-g++) after trying:
        C:/Qt/123\mkspecs
Error processing project file: C:/Qt/2010.05/qt//projects.pro
mingw32-make: *** [all] Error 3

откуда он берет этот двойной слэшь - C:/Qt/2010.05/qt//projects.pro   ???

Я попробовал положить папку C:\Qt\2010.05\qt\mkspecs в C:\Qt\123\mkspecs, тогда он начинает собирать, но собирает вовсе не в C:\Qt\123\, а туда где он установлен, и собирает с ошибками.



как же всетаки быть?
1. Установить сдк в другую папку и там уже собрать статически? Запускать 2 разных creator'a?
2. читал что сдк плох для пересборки, и нужно скачать исходники и из них уже собирать?
3. Проще таскать с собой библиотеки в папке с экзешником?

Система - Вин ХП сп3

если же собирать вот таким порядком действий:

1. Запускаю Qt Command Prompt из меню пуск
2. C:\Qt\2010.05\qt>configure -static -release
3. C:\Qt\2010.05\qt>mingw32-make

т.е. без указания пути куда собирать, то все собирается нормально, но пропадает возможность динамической сборки.
К тому же:
если выбираю в creator'e сборку под релиз то все собирается нормально статически и работает, эекзешник выростает чуть чуть в размере
если выбираю дебаг, то экзешник разростается до 150 метров  :o как так?:)


Название: Re: Сборка qt в другую папку
Отправлено: lit-uriy от Март 13, 2011, 08:36
чтобы собирать что-то в другой папке, по сравнению с папкой исходников, нужно:
перейти в "другую папку" в ней командовать команды.

применительно к Qt:
1) каталог mkspecs трогать руками не надо (как это вообще в голову пришло?).

2) идём в "другую папку"
3) в ней командуем:
 путь/к/исходникам/configure ....
4) ещё командуем:
 путь/к/исходникам/mingw32-make

П.С.
это называют "теневая" сборка


Название: Re: Сборка qt в другую папку
Отправлено: flame от Март 13, 2011, 09:27
Спасибо, сейчас попробую.

Цитировать
1) каталог mkspecs трогать руками не надо (как это вообще в голову пришло?).
да я знаю что недолжно быть такого, просто увидел строки нот фаинд ))) и решил попробовать

Could not find mkspecs for your QMAKESPEC(win32-g++) after trying:
        C:/Qt/123\mkspecs




Название: Re: Сборка qt в другую папку
Отправлено: flame от Март 13, 2011, 10:52
Вылезло вот такое:

C:\Qt\Static>C:\Qt\2010.05\qt\configure -static -fast
Error: Creating a shadow build of Qt requires
perl to be in the PATH environment

гуглил, вроде можно поставить актив перл. или можно еще как то?


Название: Re: Сборка qt в другую папку
Отправлено: flame от Март 13, 2011, 11:03
попробовал сделать как тут написано: http://www.prog.org.ru/topic_11168_0.html

Но он всеравно недает запустить конфигуре из нового каталога. попробую поставить активперл

Поставил, добавил в батник путь до перл.ехе, запустил, вроде конфигурится :)


Название: Re: Сборка qt в другую папку
Отправлено: flame от Март 13, 2011, 17:47
ничего не получается  :-[

1) Qt Command Promt (добавил перл в батник)

Setting up a MinGW/Qt only environment...
-- QTDIR set to C:\Qt\2010.05\qt
-- PATH set to C:\Qt\2010.05\qt\bin
-- Adding C:\Qt\2010.05\bin to PATH
-- Adding C:\Perl\bin to PATH
-- Adding C:\WINDOWS\System32 to PATH
-- QMAKESPEC set to win32-g++


2) C:\Qt\2010.05\qt>cd C:\Qt\111

3) C:\Qt\111>C:\Qt\2010.05\qt\configure -static -release -nomake demos -nomake example

4) C:\Qt\111>C:\Qt\2010.05\mingw\bin\mingw32-make

5)
c:\Qt\2010.05\qt\src\corelib\global\qglobal.cpp:3027: warning: 'static bool QInternal::activateCallbacks(QInte
rnal::Callback, void**)' redeclared without dllimport attribute: previous dllimport ignored
c:\Qt\2010.05\qt\src\corelib\global\qglobal.cpp:3044: warning: 'static bool QInternal::callFunction(QInternal:
:InternalFunction, void**)' redeclared without dllimport attribute: previous dllimport ignored
c:\Qt\2010.05\qt\src\corelib\global\qglobal.cpp:2566: warning: 'SeedStorage* randTLS()' defined but not used
mingw32-make[2]: *** [tmp/obj/release_static/qglobal.o] Error 1
mingw32-make[2]: Leaving directory `C:/Qt/111/src/corelib'
mingw32-make[1]: *** [release] Error 2
mingw32-make[1]: Leaving directory `C:/Qt/111/src/corelib'
mingw32-make: *** [sub-corelib-make_default-ordered] Error 2

И еще куча таких ворнингов... что делать?  ???


Название: Re: Сборка qt в другую папку
Отправлено: lit-uriy от Март 13, 2011, 20:10
вот мой батник создающий окружение:
Код
Bash
set QTDIR=L:\QtGit\Qt_4.6.x
set MINGWDIR=F:\MinGW\4.4.0
set QMAKESPEC=win32-g++
 
set QTBIN=%QTDIR%\bin
set MINGWBIN=%MINGWDIR%\bin
set ADDONPATH=F:\Perl\bin
 
::===================================
set PATH=%QTBIN%;%MINGWBIN%;%ADDONPATH%;%SystemRoot%\System32
cmd.exe
 
Перл брал отсюда: ActiveState.com.

П.С.
И для сборки яб использовал просто архив с исходниками, а не SDK

П.П.С.
Для Qt >=4.6, MinGW должен содержать компиллер >=4.4 ссылка:
ftp://ftp.trolltech.com/misc/MinGW-gcc440_1.zip (учти, форум лепит http лишнее)


Название: Re: Сборка qt в другую папку
Отправлено: flame от Март 13, 2011, 21:22
Спасибо Юрий, буду разбираться завтра!