Russian Qt Forum

Qt => Установка, сборка, отладка, тестирование => Тема начата: PinkPanther от Декабрь 14, 2008, 01:34



Название: Трабла со статической сборкой Qt 4.4.3 (.lib-ы с 4-кой на
Отправлено: PinkPanther от Декабрь 14, 2008, 01:34
Господа! Возникла странная трабла, надеюсь на помощь.

Сконфигурил и собрал Qt 4.4.3 commercial под VS2008 Prof, в следующей последовательности:
1) configure -static (+ключи для нужного)
2) mingw32-make sub-scr
3) установил интегратор 1.4.3

Тишь да гладь, ни ворнингов, ни еггогов. После этого захожу в VS, внешне все тоже чудно, QT прописалась в IDE, но при этом не могу собрать ни один из своих старых проектов - нужная библиотека Qt (в моем случае это QtCored.lib) в папке Qt с либами имеет название QtCored4.lib, и сборщик ее, естественно, не находит. Пытался читерить - переименовывать либу, отрезая 4-ку, но ничего это не дало, стали появляться ошибки при сборке. Не подскажите, что делаю не так? В мануале по статической сборке говорится, что, если верхние два пункта выполнены, библиотеки изначально не должны иметь в названии номер версии (4-ку).


Название: Re: Трабла со статической сборкой Qt 4.4.3 (.lib-ы с 4-кой на конце)
Отправлено: Rcus от Декабрь 14, 2008, 09:58
/*в шоке*/

Вы уверены что точно описали свои действия? Если так то получается вы собираете Qt одним компилятором, а приложения пытаетесь другим :) Не выйдет, читайте ман по установке Qt.


Название: Re: Трабла со статической сборкой Qt 4.4.3 (.lib-ы с 4-кой на конце)
Отправлено: PinkPanther от Декабрь 14, 2008, 14:11
/*в шоке*/

Вы уверены что точно описали свои действия? Если так то получается вы собираете Qt одним компилятором, а приложения пытаетесь другим :) Не выйдет, читайте ман по установке Qt.

Ну да, все верно. Qt компилируется с помощью g++, в последствии я использую VС. Интегратор, насколько я понимаю, выполняет работу по объединению средств Qt и MSVS (добавляет разные визуальные средства, а также MOC для обработки хеадеров, добавляет директории). Какая зависимость от компилятора при компилировании приложений с использованием  .lib-файлов, содержащих машинный код, я, если честно, не понял. :)


Название: Re: Трабла со статической сборкой Qt 4.4.3 (.lib-ы с 4-кой на конце)
Отправлено: lit-uriy от Декабрь 14, 2008, 14:54
Цитировать
Т.е. если вы собрали библиотеку Qt с помощью одного компилятора, то и собственную программу, которая будет использовать dll'ки Qt, должны компилировать этим же компилятором.
(взято тут (http://wiki.crossplatform.ru/index.php/Установка_Qt))
GCC незнает кто такие *.lib у него свои типы файлов (*.a)


Название: Re: Трабла со статической сборкой Qt 4.4.3 (.lib-ы с 4-кой на конце)
Отправлено: PinkPanther от Декабрь 14, 2008, 15:38
Цитировать
Т.е. если вы собрали библиотеку Qt с помощью одного компилятора, то и собственную программу, которая будет использовать dll'ки Qt, должны компилировать этим же компилятором.
(взято тут (http://wiki.crossplatform.ru/index.php/Установка_Qt))
GCC незнает кто такие *.lib у него свои типы файлов (*.a)

С .dll проблем, в общем и целом, нет. Но .dll - это динамические библиотеки. В этом случае надо будет вкладывать их в инсталл-пакет для того, чтобы приложение гарантированно работало на другом компьютере. Я собираю все в один файл, и .dll в этом случае не нужны. В этом случае VC использует файлы с расширением .lib, т.е. статические библиотеки. Вот ман, который я использовал для статической сборки Qt:
http://www.crossplatform.ru/documentation/qtdoc4.3/deployment-windows.php#static-linking
Там, в частности, сказано:
"Как только configure закончит работу, введите следующее:

 nmake sub-src

Это соберет Qt статически. Заметьте, что в отличие от динамической сборки, в результате статической сборки библиотеки Qt будут без номера версии, например, QtCore4.lib будет QtCore.lib. Кроме того, мы использовали nmake во всех примерах, но если вы используете MinGW вместо него вы должны воспользоваться mingw32-make."

То, что указано тут, не происходит - lib-ы, несмотря на ключ, имеют номер версии на конце и VC к ним не обращается. Единственно, что может (теоретически) иметь негативные последствия - я не использовал ключ -platform win32-msvc2008 при конфигурации Qt, т.к. его использование приводит к ошибке:
Код:
...<skipped>...
Creating qmake...
execute: File or path is not found (nmake)
execute: File or path is not found (nmake)
Cleaning qmake failed, return code -1

P.S. Запустил сборку с помощью nmake вместо mingw32-make, о результатах отпишусь. :)


Название: Re: Трабла со статической сборкой Qt 4.4.3 (.lib-ы с 4-кой на конце)
Отправлено: Detonator от Декабрь 14, 2008, 17:10
Цитировать
То, что указано тут, не происходит - lib-ы, несмотря на ключ, имеют номер версии на конце


Значит что-то ты не так скомпилил.
lib-ы при статике получаются как раз без номера и прекрасно линкуются.


Название: Re: Трабла со статической сборкой Qt 4.4.3 (.lib-ы с 4-кой на конце)
Отправлено: lit-uriy от Декабрь 14, 2008, 17:19
2 PinkPanther, ты определись для начала с компилятором, а потом уже со всем остальным.


Название: Re: Трабла со статической сборкой Qt 4.4.3 (.lib-ы с 4-кой на конце)
Отправлено: PinkPanther от Декабрь 14, 2008, 17:56
Цитировать
Значит что-то ты не так скомпилил.
lib-ы при статике получаются как раз без номера и прекрасно линкуются.

Трудно не согласиться, очевидно, ошибка у меня, иначе бы ни у кого ничего не работало. :)
Однако, "что-то" довольно трудно исправить, хотелось бы конкретики, что именно требуется к исправлению.
Что именно сделано, я указал в первом сообщении, а что требуется исправить, хотелось бы узнать у вас. :)
Я, к сожалению, в программировании под Win32 опыта большого не имею, т.к. основной опыт приобретен в 90-е годы, на TC2.0 и BC3.1, где самой крутой библиотекой была Turbo Vision.

Цитировать
2 PinkPanther, ты определись для начала с компилятором, а потом уже со всем остальным.

Я бы хотел использовать компилятор VC++ и среду VS2008. Т.е. редактировать, компилировать и собирать проекты средствами VS2008, которая, вероятнее всего, будет использоваться какие-то нативные средства Qt, типа MOC, которые добавит интегратор... чем собирать саму Qt, мне совершенно все равно. Чем нужно, тем и соберу. Главное, чтобы потом все из неё работало в VS2008. Пока, после успешной конфигурации (с ключом -platform win32-msvc2008 - запустилось после прописывания пути к бинарникам VC в PATHе) nmake вылетел с ошибками компиляции MySQL-модуля (ключ -qt-sql-mysql). :(

Еще вопрос - как собрать Qt, чтобы можно было выбирать, какой именно вариант сборки использовать? В VS есть опция, которая, например, позволяет делать этот выбор в MFC-проектах (что мы используем - dll или все-в-исполняемом). В случае с Qt нужно делать две независимые сборки? Или нужно ставить 2 Qt и две VS2008? Или каждый раз пересобирать Qt, если нужно перейти с динамики на статику? Или это крайне затруднительно?


Название: Re: Трабла со статической сборкой Qt 4.4.3 (.lib-ы с 4-кой на конце)
Отправлено: pastor от Декабрь 14, 2008, 18:14
Для всего этого вам нужно всего лишь одна VS2008. Qt  и ваши приложения должны компилироваться одним и тем же компилятором. В вашем случае это VS2008.

По поводу статической и динамической Qt: да для этого вам нужно будет иметь 2 сборки Qt в разных директориях.

По поводу ошибки сборки MySQL: На вашей машине дожен быть установлен MySQL и прописаны пути к инклудам и либам MySQL.


Название: Re: Трабла со статической сборкой Qt 4.4.3 (.lib-ы с 4-кой на конце)
Отправлено: PinkPanther от Декабрь 14, 2008, 19:58
Для всего этого вам нужно всего лишь одна VS2008. Qt  и ваши приложения должны компилироваться одним и тем же компилятором. В вашем случае это VS2008.

По поводу статической и динамической Qt: да для этого вам нужно будет иметь 2 сборки Qt в разных директориях.

По поводу ошибки сборки MySQL: На вашей машине дожен быть установлен MySQL и прописаны пути к инклудам и либам MySQL.

Большое спасибо! Статическая сборка собралась как надо с помощью VC (nmake) и работает.
По поводу 2 версий Qt: выбор между ними надо будет делать перед компиляцией, в диалоге, где можно выбрать версию?


Название: Re: Трабла со статической сборкой Qt 4.4.3 (.lib-ы с 4-кой на конце)
Отправлено: Detonator от Декабрь 14, 2008, 20:13
в разные каталоги ставь и в каждом по своему компили.
А смысл вообще две версии иметь?


Название: Re: Трабла со статической сборкой Qt 4.4.3 (.lib-ы с 4-кой на конце)
Отправлено: PinkPanther от Декабрь 14, 2008, 21:10
в разные каталоги ставь и в каждом по своему компили.
А смысл вообще две версии иметь?

Вопрос, скорее, не в том, как собрать разные версии Qt в разных каталогах (а точнее, одну и ту же версию, но в статической и динамической сборке), а как их в дальнейшем относительно последовательно использовать в VS2008. :)

Зачем: мелкие и простые приложения, как правило не имеет смысла запихивать в деплой-инсталлятор. Достаточно запихнуть все нужное в один исполняемый файл. Крупные приложения, которые тоже иногда приходится писать, при развертывании чаще всего вынуждены учитывать конфиг пользовательской машины, создавать .ini-файлы, привязываться к какому-то каталогу, а при удалении удалять себя, плоды своей деятельности, записи в реестре, и т.д. Одного файла в этом случае мало, будет как минимум 2 исполняемых, приложение и анинсталл. В этом случае проще запихнуть все в инсталлятор, и компилить, соответственно, как обычно, используя не .lib, а динамические .dll, которые войдут в комплект пакета.


Название: Re: Трабла со статической сборкой Qt 4.4.3 (.lib-ы с 4-кой на конце)
Отправлено: ритт от Декабрь 14, 2008, 23:22
ты анинсталлки тоже на кутэ пишешь? :)


Название: Re: Трабла со статической сборкой Qt 4.4.3 (.lib-ы с 4-кой на конце)
Отправлено: PinkPanther от Декабрь 15, 2008, 00:15
ты анинсталлки тоже на кутэ пишешь? :)

По правде говоря, писать полноценный анинсталл мне не доводилось. Приходилось писать утилитки, которые что-то ищут и вычищают. Писал на том, на чем был написан остальной код программы. С Qt я знаком меньше недели, и процесс написания инсталлера и анинсталлера с помощью Qt пока себе представляю слабо, но вроде в литературе об этом какая-то информация имеется.


Название: Re: Трабла со статической сборкой Qt 4.4.3 (.lib-ы с 4-кой на конце)
Отправлено: wyvern от Декабрь 15, 2008, 09:45
привет! тоже не могу собрать статически Qt

переменные окружения:
INCLUDE = C:\Program Files\Microsoft Visual Studio 8\VC\include;C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\Include
PATH = C:\Program Files\Microsoft Visual Studio 8\VC\bin;C:\Program Files\Microsoft Visual Studio 8\VC;%QTDIR%\bin\
QTDIR = C:\Qt\4.4.3
QMAKESPEC = win32-msvc2005

изменения в C:\Qt\4.4.3\mkspecs\win32-msvc2005\qmake.conf:
CONFIG += qt warn_on release incremental flat link_prl precompile_header autogen_precompile_source copy_dir_files debug_and_release debug_and_release_target
QMAKE_CFLAGS_RELEASE = -O2 -MT

конфигурирую:
configure.exe -debug-and-release -platform win32-msvc2005 -qt-sql-odbc -static -no-phonon -no-webkit -no-sql-sqlite

собираю:
nmake sub-src

результат:
nmake вылетает с различными ошибками при разных ключах configure.exe

никак не пойму, что не так


Название: Re: Трабла со статической сборкой Qt 4.4.3 (.lib-ы с 4-кой на конце)
Отправлено: pastor от Декабрь 15, 2008, 12:29
изменения в C:\Qt\4.4.3\mkspecs\win32-msvc2005\qmake.conf:
CONFIG += qt warn_on release incremental flat link_prl precompile_header autogen_precompile_source copy_dir_files debug_and_release debug_and_release_target
QMAKE_CFLAGS_RELEASE = -O2 -MT

А так?

Цитировать
CONFIG         += qt warn_on release incremental flat link_prl precompile_header autogen_precompile_source copy_dir_files debug_and_release debug_and_release_target
QMAKE_CFLAGS_RELEASE   = -O2 -MT
QMAKE_CFLAGS_DEBUG   = -Zi -MTd

Если непоможет, build log в студию


Название: Re: Трабла со статической сборкой Qt 4.4.3 (.lib-ы с 4-кой на конце)
Отправлено: wyvern от Декабрь 15, 2008, 15:27
не помогло. вот часть лога вместе с ошибкой:

cl -c -FIqt_gui_pch.h -Yuqt_gui_pch.h -Fptmp\obj\debug_static\QtGuid_pch.pch -nologo -Zm200 -Zc:wchar_t- -Zi -MTd -W3 -w34100 -w34189 -GR -EHsc -DQT_THREAD_SUPPORT -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_EDITION=QT_EDITION_DESKTOP -DQT_BUILD_GUI_LIB -DQT_NO_USING_NAMESPACE -DQT_NO_CAST_TO_ASCII -DQT_ASCII_CAST_WARNINGS -DQT_MOC_COMPAT -D_USE_MATH_DEFINES -DQT_NO_IMAGEFORMAT_PNG -DQT_RASTER_IMAGEENGINE -DQT_RASTER_PAINTENGINE -DQT_NO_CUPS -DQT_NO_LPR -DQT_NO_FREETYPE -DQT_NO_OPENTYPE -DQT_NO_STYLE_MAC -DQT_NO_STYLE_WINDOWSCE -DQT_NO_STYLE_WINDOWSMOBILE -DQ_INTERNAL_QAPP_SRC -DQT_CORE_LIB -I"..\..\include\QtCore" -I"..\..\include\QtCore" -I"..\..\include" -I"..\..\include\QtGui" -I"tmp\rcc\debug_static" -I"tmp" -I"..\3rdparty\wintab" -I"..\3rdparty\harfbuzz\src" -I"dialogs" -I"..\..\include\ActiveQt" -I"tmp\moc\debug_static" -I"." -I"..\..\mkspecs\win32-msvc2005" -Fotmp\obj\debug_static\ @C:\DOCUME~1\phumala\LOCALS~1\Temp\nm2A8.tmp
qbezier.cpp
qbrush.cpp
qcolor.cpp
qcolor_p.cpp
qcssutil.cpp
qdrawutil.cpp
qpaintengine.cpp
qpainter.cpp
qpainterpath.cpp
qpdf.cpp
qpen.cpp
qpolygon.cpp
qprintengine_pdf.cpp
painting\qprintengine_pdf.cpp(55) : fatal error C1083: Cannot open include file: 'zlib.h': No such file or directory
qprintengine_ps.cpp
qpaintengine_preview.cpp
qprinter.cpp
qstroker.cpp
qstylepainter.cpp
qtessellator.cpp
qregion.cpp
Generating Code...
Compiling...
qmatrix.cpp
qrasterizer.cpp
qtransform.cpp
qpathclipper.cpp
qmemrotate.cpp
qpaintengine_raster.cpp
qdrawhelper.cpp
qimagescale.cpp
qcolormap_win.cpp
qpaintdevice_win.cpp
qprintengine_win.cpp
qprinterinfo_win.cpp
qregion_win.cpp
qbackingstore.cpp
qwindowsurface.cpp
qwindowsurface_raster.cpp
Generating Code...

NMAKE : fatal error U1077: '"C:\path\to\cl\cl.exe"' : return code '0x2'
Stop.
NMAKE : fatal error U1077: '"C:\path\to\nmake\nmake.exe"' : return code '0x2'
Stop.
NMAKE : fatal error U1077: 'cd' : return code '0x2'
Stop.


Название: Re: Трабла со статической сборкой Qt 4.4.3 (.lib-ы с 4-кой на конце)
Отправлено: spirit от Декабрь 15, 2008, 16:19
пути к студии не прописаны (cl && nmake невидны). можно воспользоваться Пукс->Microsoft Visual Studio 2005(8)->Visual Studio Tools->Visual Studio 2005(8) Command Prompt или самому вызвать скрипт установки переменных окружения студии vsvars32.bat и попробовать собрать заново.
проипал  ;D не заметил ошибку выше.


Название: Re: Трабла со статической сборкой Qt 4.4.3 (.lib-ы с 4-кой на конце)
Отправлено: wyvern от Декабрь 15, 2008, 16:23
пути к студии не прописаны (cl && nmake невидны). можно воспользоваться Пукс->Microsoft Visual Studio 2005(8)->Visual Studio Tools->Visual Studio 2005(8) Command Prompt или самому вызвать скрипт установки переменных окружения студии vsvars32.bat и попробовать собрать заново.

да ладно, не видны.

привет! тоже не могу собрать статически Qt

переменные окружения:
INCLUDE = C:\Program Files\Microsoft Visual Studio 8\VC\include;C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\Include
PATH = C:\Program Files\Microsoft Visual Studio 8\VC\bin;C:\Program Files\Microsoft Visual Studio 8\VC;%QTDIR%\bin\
QTDIR = C:\Qt\4.4.3
QMAKESPEC = win32-msvc2005

сборка ведь какое-то время идет... но завершается ошибкой

хотя, может, я чего-то не замечаю


Название: Re: Трабла со статической сборкой Qt 4.4.3 (.lib-ы с 4-кой на конце)
Отправлено: spirit от Декабрь 15, 2008, 16:25
ашник zlib не видет
Цитировать
painting\qprintengine_pdf.cpp(55) : fatal error C1083: Cannot open include file: 'zlib.h': No such file or directory


Название: Re: Трабла со статической сборкой Qt 4.4.3 (.lib-ы с 4-кой на конце)
Отправлено: pastor от Декабрь 15, 2008, 16:37
пути к студии не прописаны

Жело не в этом. В составе Qt уже имеется zlib (src\3rdparty\zlib\), по какой-то причине невидны его инклуды. Я где-то встречал эту проблему при статической сборке.


Как вариант, при конфигурации укажи путь к папке src\3rdparty\zlib


Название: Re: Трабла со статической сборкой Qt 4.4.3 (.lib-ы с 4-кой на конце)
Отправлено: wyvern от Декабрь 15, 2008, 16:46
не помогло. указывал путь через ключ -I:

configure.exe -debug-and-release -platform win32-msvc2005 -qt-sql-odbc -static -no-gif -no-libpng -no-libmng -no-libtiff -no-libjpeg -no-phonon -no-phonon-backend -no-webkit -no-assistant-webkit -no-mmx -no-3dnow -no-sse -no-sse2 -no-openssl -no-dbus -no-sql-sqlite -no-qt3support -no-opengl -no-stl -qt-zlib -I C:\Qt\4.4.3\src\3rdparty\zlib

при этом сборка прерывается на кодеке \src\plugins\codecs\kr\qkrcodecs

ошибок не наблюдается. процесс прекращается на вызове lib


Название: Re: Трабла со статической сборкой Qt 4.4.3 (.lib-ы с 4-кой на конце)
Отправлено: lit-uriy от Декабрь 15, 2008, 17:55
помоему ключи типа -I  и -L слитно с их аргументами пишутся


Название: Re: Трабла со статической сборкой Qt 4.4.3 (.lib-ы с 4-кой на конце)
Отправлено: wyvern от Декабрь 15, 2008, 17:57
помоему ключи типа -I  и -L слитно с их аргументами пишутся

-I <includepath> ... Add an explicit include path.

да я и в INCLUDE прописывал. по-моему, не имеет значения, где указать путь до zlib.h


Название: Re: Трабла со статической сборкой Qt 4.4.3 (.lib-ы с 4-кой на конце)
Отправлено: PinkPanther от Декабрь 15, 2008, 18:26
А компилит командная строка, которая принадлежит студии? Если нет, то рекомендую попробовать все сделать в ней, она валяется в Tools студии (доступ из главного меню).


Название: Re: Трабла со статической сборкой Qt 4.4.3 (.lib-ы с 4-кой на конце)
Отправлено: Detonator от Декабрь 15, 2008, 23:15
Вот такой у меня bat файл лежит для компиляции, все нормально компилится

Цитировать
cd C:\Qt\4.5.0
call C:\Qt\4.4.3\bin\qtvars.bat vsvars
configure -static -debug-and-release -no-fast -exceptions -accessibility -stl -no-sql-sqlite -no-qt3support -no-opengl -qt-zlib -qt-gif -qt-libpng -qt-libmng -no-libtiff -qt-libjpeg
nmake

Вот эта вот строка сама пути к студии настраивает
call C:\Qt\4.4.3\bin\qtvars.bat vsvars


Название: Re: Трабла со статической сборкой Qt 4.4.3 (.lib-ы с 4-кой на конце)
Отправлено: pastor от Декабрь 16, 2008, 11:57
qtvars.bat

Это самописный батник?


Название: Re: Трабла со статической сборкой Qt 4.4.3 (.lib-ы с 4-кой на конце)
Отправлено: wyvern от Декабрь 16, 2008, 12:11
qtvars.bat

Это самописный батник?

это файл Qt. он запускается при входе в командную строку Qt из "Пуска"


Название: Re: Трабла со статической сборкой Qt 4.4.3 (.lib-ы с 4-кой на конце)
Отправлено: pastor от Декабрь 16, 2008, 12:21
это файл Qt. он запускается при входе в командную строку Qt из "Пуска"

неудивительно, что я ниразу его невидел. Очевидно, что он находится только в бинарных сборках Qt


Название: Re: Трабла со статической сборкой Qt 4.4.3 (.lib-ы с 4-кой на конце)
Отправлено: Detonator от Декабрь 16, 2008, 13:41
Я не сомтрел опенсорсную версию Qt, так что не в курсе почему там его нет
вот содержимое qtvars.bat на всякий случай

Цитировать
@echo off
rem
rem This file is generated by the Qt installer
rem

echo Setting up a Qt environment...

set QTDIR=C:\Qt\4.4.3
echo -- QTDIR set to C:\Qt\4.4.3
set PATH=C:\Qt\4.4.3\bin;%PATH%
echo -- Added C:\Qt\4.4.3\bin to PATH
set QMAKESPEC=win32-msvc2008
echo -- QMAKESPEC set to "win32-msvc2008"

if not "%1"=="vsvars" goto ENDVSVARS
call "C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\vsvars32.bat"
:ENDVSVARS

if not "%1"=="vsstart" goto ENDVSSTART
call "C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\vsvars32.bat"
devenv /useenv
:ENDVSSTART



Название: Re: Трабла со статической сборкой Qt 4.4.3 (.lib-ы с 4-кой на конце)
Отправлено: pastor от Декабрь 16, 2008, 14:30
Я не сомтрел опенсорсную версию Qt, так что не в курсе почему там его нет
вот содержимое qtvars.bat на всякий случай

У меня коммерческая версия (лицензия). Я качаю только архивы исходников, а не бинарные сборки под определенный компиль, и там такого файла нет. Для меня это совершенно некритично, так любопытно стало ;)

Цитировать
This file is generated by the Qt installer

Эта строка все объясняет :)


Название: Re: Трабла со статической сборкой Qt 4.4.3 (.lib-ы с 4-кой на конце)
Отправлено: Detonator от Декабрь 16, 2008, 19:57
А как ты их компилишь?
Вот я юзаю снапшот от 4.5, там одни исходники.
Но вот при компиляции он не находит файлы qmake.exe и прочие, может он его тоже должен с нуля скомпилить, но почему то не делает это.
Вот и получается чтобы скомпилить 4.5 мне приходится держать установленный бинарный дистрибутив 4.4.3
Документацию у меня вообще не получилось скомпилить к 4.5 снапшот никак, скопировал из 4.5 tp1 где она уже скомпиленая шла.


Название: Re: Трабла со статической сборкой Qt 4.4.3 (.lib-ы с 4-кой на конце)
Отправлено: spirit от Декабрь 16, 2008, 20:10
заходишь в папку qmake и собираешь его.
а вообще из сырцов все должно собираться, никогда не юзал кьюти из инсталях.


Название: Re: Трабла со статической сборкой Qt 4.4.3 (.lib-ы с 4-кой на конце)
Отправлено: pastor от Декабрь 16, 2008, 20:14
А как ты их компилишь?
Вот я юзаю снапшот от 4.5, там одни исходники.
Но вот при компиляции он не находит файлы qmake.exe и прочие, может он его тоже должен с нуля скомпилить, но почему то не делает это.
Вот и получается чтобы скомпилить 4.5 мне приходится держать установленный бинарный дистрибутив 4.4.3
Документацию у меня вообще не получилось скомпилить к 4.5 снапшот никак, скопировал из 4.5 tp1 где она уже скомпиленая шла.

Да собственно говоря недумаю что сборка 4.5 будет отличатся от 4.4. Запускаешь configure (собирается qmake и другие тулзы для конфигурации), происходит конфигурация, далее make. Все должно быть нормально. А как ты собираешь 4.5?


Название: Re: Трабла со статической сборкой Qt 4.4.3 (.lib-ы с 4-кой на конце)
Отправлено: Rcus от Декабрь 16, 2008, 21:00
Документацию у меня вообще не получилось скомпилить к 4.5 снапшот никак, скопировал из 4.5 tp1 где она уже скомпиленая шла.
Таже фигня была c 4.5-snapshot, вылечилось при помощи make qch_docs (хотя судя по тому сколько ненужного пересобралось возможно можно и проще/быстрее)


Название: Re: Трабла со статической сборкой Qt 4.4.3 (.lib-ы с 4-кой на конце)
Отправлено: Detonator от Декабрь 16, 2008, 23:22
Да собственно говоря недумаю что сборка 4.5 будет отличатся от 4.4. Запускаешь configure (собирается qmake и другие тулзы для конфигурации), происходит конфигурация, далее make. Все должно быть нормально. А как ты собираешь 4.5?

Да собственно так и собираю. Я уже приводил раньше батник.
cd C:\Qt\4.5.0
call C:\Qt\4.4.3\bin\qtvars.bat vsvars
configure -static -debug-and-release -no-fast -exceptions -accessibility -stl -no-sql-sqlite -no-qt3support -no-opengl -qt-zlib -qt-gif -qt-libpng -qt-libmng -no-libtiff -qt-libjpeg
nmake

Если так не делать то в какой то момент выдает qmake.exe not found.
А если собирать с помощью qmake из 4.4.3 то все равботает и в конце qmake.exe в папке bin появляется.
Но возможно это проблема snapshot-ов, что-то не в той последовательности сборки прописано. Может к релизу исправят.


Название: Re: Трабла со статической сборкой Qt 4.4.3 (.lib-ы с 4-кой на конце)
Отправлено: ритт от Декабрь 17, 2008, 00:06
попробуй в конфигуре явно указать -qmake
никаких подобных проблем снапшотов нет; и шаманства с окружением другой версии не нужны
qmake собирается бутстрапом в начале процесса конфигурации - а затем выполняет генерирование Makefile'ов для подрпроектов. для nmake'а процесс не должен шибко отличаться от make.
в крайнем случае можешь пойти в папку qmake и собрать qmake вручную (обычно это не нужно, но такая возможность иметтся - однажды в 4.3.какой-то версии пришлось так делать из-за проблем со сборкой)


Название: Re: Трабла со статической сборкой Qt 4.4.3 (.lib-ы с 4-кой на конце)
Отправлено: wyvern от Декабрь 17, 2008, 10:29
использовал следующий bat-файл:

call C:\Qt\4.4.3\bin\qtvars.bat vsvars
nmake distclean
configure -static -qt-sql-odbc -platform win32-msvc2005 -no-sql-sqlite -no-phonon -no-webkit
nmake

полагаю, если запустить его через ком. строку Visual Studio в "Пуске" (т.е. выполнится, например, "C:\Program Files\Microsoft Visual Studio 8\VC\vcvarsall.bat x86"),
то можно обойтись и без вызова call, что многие и делали

похоже, проблема у меня была в том, что просто не хватало места на жестком диске :)

кажется, теперь все установилось нормально. точно могу лишь сказать, что процесс сборки не прервался ошибкой, и проекты переносятся на машины, на которых нет библиотек


Название: Re: Трабла со статической сборкой Qt 4.4.3 (.lib-ы с 4-кой н
Отправлено: Detonator от Декабрь 17, 2008, 12:16
Да уж, у меня тоже при статик линковке из-за временных файлов до 16 Gb свободного места занимает.
после компиляции в каталоге C:\Qt\4.5.0 остается файлов чуть меньше 10Gb.


Название: Re: Трабла со статической сборкой Qt 4.4.3 (.lib-ы с 4-кой на конце)
Отправлено: wyvern от Декабрь 17, 2008, 12:40
на самом деле, мне кажется, что не до конца поставилось.
все закончилось link'ом какого-то непонятного файла.
и не было никаких сообщений о том, что все закончилось, это нормально?


Название: Re: Трабла со статической сборкой Qt 4.4.3 (.lib-ы с 4-кой на конце)
Отправлено: pastor от Декабрь 17, 2008, 12:48
и не было никаких сообщений о том, что все закончилось, это нормально?

Это нормально. Никаких сообщение об окончании сборки нет. Дизайнер, ассистант, лингвист и прочее собралось? Если да - то все ОК.


Название: Re: Трабла со статической сборкой Qt 4.4.3 (.lib-ы с 4-кой на конце)
Отправлено: wyvern от Декабрь 17, 2008, 12:57
вроде, в bin есть эти файлы. но проблема в том, что сначала я поставил бинарную версию, а уже потом ее пересобрал. так что, возможно, это старые файлы. вдруг они не удалились после "nmake distclean". или он их не удаляет?


Название: Re: Трабла со статической сборкой Qt 4.4.3 (.lib-ы с 4-кой на конце)
Отправлено: pastor от Декабрь 17, 2008, 13:00
вроде, в bin есть эти файлы. но проблема в том, что сначала я поставил бинарную версию, а уже потом ее пересобрал. так что, возможно, это старые файлы. вдруг они не удалились после "nmake distclean". или он их не удаляет?

Глянь по дате их создания. Ты же знаешь когда ты компилил Qt


Название: Re: Трабла со статической сборкой Qt 4.4.3 (.lib-ы с 4-кой на конце)
Отправлено: wyvern от Декабрь 17, 2008, 14:50
старые файлы

после configure вызывать "nmake" или "nmake sub-src"? про второй вариант все упоминают, но, по-моему, с первым у меня сборка дальше продвигается


Название: Re: Трабла со статической сборкой Qt 4.4.3 (.lib-ы с 4-кой на конце)
Отправлено: pastor от Декабрь 17, 2008, 14:56
Если ничего не менял в конфиге Qt, то nmake собирет либы, тулзы (ассистант, дизайнер, этц), экзамлы, демки. nmake sub-src - собирет только либы. Тебе нужно вызвать ещё nmake sub-tools для сборки дизайнера и прочего.

Поищи по форуму темы насчет сборки Qt как такавой, а также поищи по поводу статической сборки Qt. Про это уже неоднократно обсуждалось.


Название: Re: Трабла со статической сборкой Qt 4.4.3 (.lib-ы с 4-кой на конце)
Отправлено: wyvern от Декабрь 17, 2008, 15:50
я правильно понимаю, что
nmake sub-doc - собирает документацию
nmake sub-demos - собирает демки
nmake sub-examples - собирает примеры?


Название: Re: Трабла со статической сборкой Qt 4.4.3 (.lib-ы с 4-кой на конце)
Отправлено: Detonator от Декабрь 17, 2008, 16:20
а кого как, а у меня
NMAKE : fatal error U1073: don't know how to make 'sub-doc'
Stop.


Название: Re: Трабла со статической сборкой Qt 4.4.3 (.lib-ы с 4-кой на конце)
Отправлено: wyvern от Декабрь 17, 2008, 16:21
пытаюсь понять логику этих ключей, откуда они берутся


Название: Re: Трабла со статической сборкой Qt 4.4.3 (.lib-ы с 4-кой на конце)
Отправлено: pastor от Декабрь 17, 2008, 17:42
пытаюсь понять логику этих ключей, откуда они берутся

Открой QTDIR\Makefile


Название: Re: Трабла со статической сборкой Qt 4.4.3 (.lib-ы с 4-кой на конце)
Отправлено: wyvern от Декабрь 19, 2008, 08:32
наконец и у меня получилось собрать

вот мой рецепт, вдруг кому пригодится (вполне возможно, что в нем есть что-то лишнее, или я все же что-то упустил):

1) переменные окружения:
QTDIR = C:\Qt\4.4.3
QMAKESPEC = win32-msvc2005
PATH = %PATH%;%QTDIR%\bin

если собираете какой-нибудь сторонний плагин, то добавьте путь до его инклудов в INCLUDE

2) bat-файл:
call "C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\vsvars32.bat"

cd %QTDIR%

nmake distclean

configure -platform win32-msvc2005 -static -release -plugin-sql-odbc -plugin-sql-sqlite -no-sql-sqlite -no-phonon -no-webkit -no-phonon-backend -no-assistant-webkit

nmake sub-src
nmake sub-tools
nmake sub-plugins
nmake sub-sql

3) свободного места на диске, куда собираете, иметь гигов 17 (если собирать все через nmake без ключей)


Название: Re: Трабла со статической сборкой Qt 4.4.3 (.lib-ы с 4-кой на конце)
Отправлено: wyvern от Декабрь 19, 2008, 09:04
только вот опять проблема появилась.

собрал я статические плагины (если правильно выражаюсь, а то совсем запутался в терминах).

появились они в папке %QTDIR%\plugins\sqldrivers (qsqlite.lib, qsqloci.lib, qsqlodbc.lib)

пытаюсь их подключить к проекту по Assistant:

в main.cpp:
Код
C++ (Qt)
#include <QtPlugin>
 
QT_BEGIN_NAMESPACE
Q_IMPORT_PLUGIN(qoci)
QT_END_NAMESPACE

в *.pro:
Код
C++ (Qt)
QTPLUGIN += qoci

в итоге сборка проекта оканчивается ошибкой:
error LNK2019: unresolved external symbol "class QObject * __cdecl qt_plugin_instance_qoci(void)" (?qt_plugin_instance_qoci@@YAPAVQObject@@XZ) referenced in function "public: __thiscall StaticqociPluginInstance::StaticqociPluginInstance(void)" (??0StaticqociPluginInstance@@QAE@XZ)   main.obj


Название: Re: Трабла со статической сборкой Qt 4.4.3 (.lib-ы с 4-кой на конце)
Отправлено: Mikhail от Декабрь 19, 2008, 10:16
Добавь в проектный файл библиотеки статический  плагинов  через LIBS +=

QTPLUGIN += qoci в проекте лишнее



Название: Re: Трабла со статической сборкой Qt 4.4.3 (.lib-ы с 4-кой на конце)
Отправлено: wyvern от Декабрь 19, 2008, 10:39
Добавь в проектный файл библиотеки статический  плагинов  через LIBS +=

QTPLUGIN += qoci в проекте лишнее

сделал:
LIBS += ... /
-qsqloci

не помогло.

может, нужно в свойствах проекта прописать пути к этим плагинам?

я пробовал добавить путь в Linker->General->Additional Library Directories
не помогло


Название: Re: Трабла со статической сборкой Qt 4.4.3 (.lib-ы с 4-кой на конце)
Отправлено: Detonator от Декабрь 19, 2008, 11:59
А что такое должен делать "nmake distclean" ?

У меня он выдает
NMAKE : fatal error U1073: don't know how to make 'distclean'
Stop.

Но и без него вчера 4.5 beta1 в статике без проблем скомпилилась.


Название: Re: Трабла со статической сборкой Qt 4.4.3 (.lib-ы с 4-кой на конце)
Отправлено: wyvern от Декабрь 19, 2008, 12:05
nmake distclean - очищает от предыдущей установки. если ничего не было установлено, то он и не работает. это нормально, как я думаю. просто вызывается на всякий случай, вдруг переставляем конфигурацию, тогда надо удалить старую установку. мне кажется, что-то похожее делает nmake confclean (где-то его встречал), но я его не пробовал


Название: Re: Трабла со статической сборкой Qt 4.4.3 (.lib-ы с 4-кой на конце)
Отправлено: wyvern от Декабрь 19, 2008, 12:08
а можно использовать в проекте статической сборки динамические библиотеки, например, для работы с БД?


Название: Re: Трабла со статической сборкой Qt 4.4.3 (.lib-ы с 4-кой на конце)
Отправлено: Mikhail от Декабрь 19, 2008, 14:21
Добавь в проектный файл библиотеки статический  плагинов  через LIBS +=

QTPLUGIN += qoci в проекте лишнее

сделал:
LIBS += ... /
-qsqloci

не помогло.

может, нужно в свойствах проекта прописать пути к этим плагинам?

я пробовал добавить путь в Linker->General->Additional Library Directories
не помогло

Наверно и не поможет при добавлении к библиотекам
-qsqloci
Что за минус и где расширение
У тебя же нет реально файла с именем -qsqloci.lib  ?


Название: Re: Трабла со статической сборкой Qt 4.4.3 (.lib-ы с 4-кой на
Отправлено: wyvern от Декабрь 19, 2008, 14:40
поясни, пожалуйста. что-то я не догоняю

1) Qt собрана статически

2) собрал OCI по алгоритму
set INCLUDE=%INCLUDE%;c:\oracle\oci\include
set LIB=%LIB%;c:\oracle\oci\lib\msvc
cd %QTDIR%\src\plugins\sqldrivers\oci
qmake oci.pro
nmake

в результате в C:\Qt\4.4.3\plugins\sqldrivers появились файлы qsqlocid.lib и qsqloci.lib

dll-ки не появились (наверно, из-за стат. сборки Qt)

что не так в pro-файле?

LIBS += -lgdi32 \
    -lcomdlg32 \
    -loleaut32 \
    -limm32 \
    -lwinmm \
    -lwinspool \
    -lws2_32 \
    -lole32 \
    -luser32 \
    -lmsimg32 \
    -lshell32 \
    -lkernel32 \
    -luuid \
    -ladvapi32 \
    -L%QTDIR\plugins\sqldrivers\qsqloci.lib% \
    -loci


Название: Re: Трабла со статической сборкой Qt 4.4.3 (.lib-ы с 4-кой на конце)
Отправлено: wyvern от Декабрь 19, 2008, 14:51
Добавь в проектный файл библиотеки статический  плагинов  через LIBS +=

QTPLUGIN += qoci в проекте лишнее

что скажешь на это?
http://www.prog.org.ru/topic_2325_0.html
http://doc.trolltech.com/4.3/plugins-howto.html#static-plugins (ниже таблицы)


Название: Re: Трабла со статической сборкой Qt 4.4.3 (.lib-ы с 4-кой на
Отправлено: Mikhail от Декабрь 19, 2008, 17:29
Посмотри проектный файл:

-L%QTDIR\plugins\sqldrivers\qsqloci.lib% \

это такой путь или шутка?.

А при статической сборке Qt да и не только я бы посоветовал собирать не плагин для базы а вкомпилировать
работу с базой в саму Qt.

На примере MYQSL опции конфигурации Qt выглядят в этом случае так:
configure -release -static  -qt-sql-mysql -I c:\mysqlDEV\include -L c:\mysqlDEV\lib -l libmysql

В проектном файле разрабатываемого приложении достаточно следующего:
QT +=   sql