Название: Статическая сборка с WebKit, MS VS Отправлено: vipet от Октябрь 24, 2011, 15:44 По многочисленным просьбам:
Краткая инструкция как собрать Qt статичеcки, включая статический WebKit, с помощью MS VS (то бишь под венду). Версия Qt - актуальная на данный момент (2011 год), т.е. 4.7.x. 1. Статический билд openSSL Делаем по ее инструкции, она хорошая - файл INSTALL.W32 (в конце запустить nmake -f ms\nt.mak) 2. Билд Qt 2.1. Распаковываем исходники Qt в любую папку 2.2. Добавляем переменную окружение QTDIR, указывающую на эту папку. Добавляем %QTDIR%\bin в PATH 2.3. QTDIR\mkspecs\win32-msvc2010\qmake.conf DEFINES += UNICODE WIN32 QT_LARGEFILE_SUPPORT QT_STATIC_BUILDD QMAKE_CFLAGS_RELEASE = -O2 -MD QMAKE_CFLAGS_DEBUG = -Zi -MDd в посл. 2 строки можно добавить -MP2 чтобы загрузить 2 процессора. если линковать MS CRT статически, то вместо -MD и -MDd нужно -MT и -MTd Если MT/MTd, то тогда еще убрать создание манифестов из CONFIG - embed_manifest_dll embed_manifest_exe 2.4. QTDIR\src\3rdparty\webkit\WebKit.pri В переменную CONFIG добавляем staticlib 2.5. Запускаем MSVS Command Prompt, идем в директорию QTDIR 2.6. configure -loadconfig <имяконфига> (Файл с конфигом имеет имя вида configure_имяконфига.cache) 2.7. qmake projects.pro QT_BUILD_PARTS="libs" JAVASCRIPTCORE_JIT="yes" 2.8. nmake или, чтоб быстрее, nmake sub-src 2.9. Примечание: при таком билде QtWebKit.lib не вбирает в себя jscore.lib. jscore.lib находится в QTDIR\src\3rdparty\webkit\JavaScriptCore\release и debug. Ее надо будет указывать линкеру (или копировать в место, где линкер ее увидит). Напр., CMake скрипт в моих проектах ищет эту либу в папке QTDIR\lib (она туда скопирована). 2.10 Еще надо собрать плагин(ы) для image formats отдельно, если нужны Название: Re: Статическая сборка с WebKit, MS VS Отправлено: yuriyb от Октябрь 24, 2011, 16:04 А нельзя заставить QtWebKit.lib слинковаться с jscore.lib ?
QT_STATIC_BUILD - для чего ? в сорцах нигде это определине не используется вроде Название: Re: Статическая сборка с WebKit, MS VS Отправлено: vipet от Октябрь 24, 2011, 16:41 А нельзя заставить QtWebKit.lib слинковаться с jscore.lib ? Можно, но лень Цитировать QT_STATIC_BUILD - для чего ? в сорцах нигде это определине не используется вроде Не помню уже, полгода назад дело было, может и не надо Название: Re: Статическая сборка с WebKit, MS VS Отправлено: yuriyb от Октябрь 24, 2011, 18:54 таки собрал qt статически. Но!
Код: configure -debug-and-release -opensource -static -platform win32-msvc2008 -plugin-sql-sqlite -no-qt3support -qt-zlib -qt-gif -qt-libpng -qt-libmng -qt-libtiff -qt-libjpeg -mmx -3dnow -sse -sse2 -openssl-linked -phonon -phonon-backend -multimedia -audio-backend -webkit -script -declarative -arch windows -I C:\OpenSSL-Win32\include -L C:\OpenSSL-Win32\lib теперь во время линковки моего проекта которы пользует и phonon и webkit - вот такая Ж Код: QtWebKit.lib(MediaPlayerPrivatePhonon.obj) : error LNK2019: unresolved external symbol "__declspec(dllimport) class QStringList __cdecl Phonon::BackendCapabilities::availableMimeTypes(void)" (__imp_?availableMimeTypes@BackendCapabilities@Phonon@@YA?AVQStringList@@XZ) referenced in function "private: static class WTF::HashSet<class WebCore::String,struct WebCore::StringHash,struct WTF::HashTraits<class WebCore::String> > & __cdecl WebCore::MediaPlayerPrivate::supportedTypesCache(void)" (?supportedTypesCache@MediaPlayerPrivate@WebCore@@CAAAV?$HashSet@VString@WebCore@@UStringHash@2@U?$HashTraits@VString@WebCore@@@WTF@@@WTF@@XZ) есть идеи как победить ? Название: Re: Статическая сборка с WebKit, MS VS Отправлено: vipet от Октябрь 24, 2011, 18:59 Фонон я не юзал, так что не подскажу.
Без статики фонон и веб-кит работали? Если нет, то что там с бэкэндами фонона у тебя? Название: Re: Статическая сборка с WebKit, MS VS Отправлено: yuriyb от Октябрь 24, 2011, 19:01 Без статики проект полностью рабочий
|