Qt5 development primer
-
On OSX I got stuck with a conflict of MacTypes.h
"http://code.google.com/p/webkit-mirror/source/detail?r=a84882c321ecf749f61a855f1538aeaf938b2340":http://code.google.com/p/webkit-mirror/source/detail?r=a84882c321ecf749f61a855f1538aeaf938b2340
Here are some links to patches that address some of the problems mentioned by Philius:
"https://gist.github.com/1647614":https://gist.github.com/1647614
"https://bug-76463-attachments.webkit.org/attachment.cgi?id=122778":https://bug-76463-attachments.webkit.org/attachment.cgi?id=122778 -
Those "QT += quick" are needed on Debian Wheezy because of
@
ld.bfd: "could not read symbols: Invalid operation" after indirect reference is unhelpful
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=629498
@ -
I can confirm that all of changes mentioned by Philius are required to build on OSX.
I also needed to add - "QT += quick" to the following files:
./qtwebkit/Source/WebKit/qt/declarative/public.pri
./qtwebkit/Source/WebKit/qt/declarative/experimental/experimental.pri
./qtwebkit/Source/WebKit2/UIProcess/API/qt/tests/tests.priPhilius - I think there are a few small mistakes in your earlier post which may be misleading to some - you say add "Qt += quick" which I believe should be "QT += quick" with upper case T
-
Yep.
While packaging my projects to get them into Debian I had my wrist slapped for referring to Qt as QT, which is QuickTime.
It must have stuck in my head.
They're spelled correctly in the patch, and anyway sometimes you have to append "quick" to the existing "QT =" or "QT +=" line. -
Very true about appending it in some cases.
I was wondering have you been testing qtwebkit at all? On OSX the build seems to be adding incorrect paths from the binaries to the dynamic libraries. I've fixed them up but MiniBrowser and QtTestBrowser are still not quite working properly yet. I'm going to look into it more later. I just wondered if the situation was looking any better on Linux? I'm going to try building on Ubuntu next.
-
I just started a shadow build.
Here's the makefile (same dir as qt5).
@
all: config
cd qt5-build;
export PATH="${PATH}:$$(readlink -f qtbase/bin)";
make -j 2 && make installconfig: #clean
mkdir -p qt5-build
mkdir -p qt5-install
cd qt5-build;
if test ! -f config.stamp; then
../qt5/configure -prefix $$(readlink -f ../qt5-install) -no-wayland
-no-openvg -opengl es2 -opensource -confirm-license -v
-I /usr/include/gstreamer-0.10
-I /usr/include/glib-2.0
-I /usr/lib/x86_64-linux-gnu/glib-2.0/include
-I /usr/include/libxml2
2>&1 | tee make.txt;
touch config.stamp;
else
echo "Config target already done.";
ficlean:
#cd qt5; git submodule foreach --recursive 'git clean -dfx'
rm -fr qt5-build
@The includes are for gstreamer support.
It looks like OpenVG and Phonon aren't ready yet.
The error for them is "QMAKESPEC has not been set, so configuration cannot be deduced".I'll report back when it's done.
-
Out of source builds definitely don't work, although this could change with new updates.
I'm not sure why the separate packages aren't "configure && make && make install" -able individually.
Maybe this is just to get them built quicker, but then they aren't really separate packages.Also, providing text instructions that (currently) conflict with the README in git isn't helpful.
One of them should change.Next, there should be a top-level "make" script which builds the tested configuration.
export "$ROOT" to the absolute path to the qt5 directory for the comments below.
I added
@export QMAKESPEC="linux-g++-64"@otherwise svg and phonon modules fail.
I added
@-prefix ${ROOT}/qtbase@otherwise qmake won't find qmodule.pri.
I added
@export PATH="${ROOT}/qtbase/bin:${PATH}"@To use the binaries built in the build tree and not those installed on my system.
It still fails with the following error:
@
../../../../Source/WebCore/platform/graphics/qt/GraphicsContext3DQt.cpp: In member function ‘void WebCore::GraphicsContext3DPrivate::blitMultisampleFramebuffer() const’:
../../../../Source/WebCore/platform/graphics/qt/GraphicsContext3DQt.cpp:261:23: error: ‘GL_READ_FRAMEBUFFER_EXT’ was not declared in this scope
../../../../Source/WebCore/platform/graphics/qt/GraphicsContext3DQt.cpp:262:23: error: ‘GL_DRAW_FRAMEBUFFER_EXT’ was not declared in this scope
make[6]: *** [obj/release-static/platform/graphics/qt/GraphicsContext3DQt.o] Error 1
@GL_READ_FRAMEBUFFER_EXT is defined in GL/glext.h but not in OpenGL ES2, at least not in Wheezy amd64.
-
Sorry for editing my messages but the ground is moving under me.
I rebuilt with "regular" OpenGL and found one more problem:
qtwebkit-examples-and-demos/examples/browser/cookiejar.cpp is missing "#include <QNetworkCookie>".I sent a message to development@qt-project.org so hopefully the patch (along with my patch for qtwebkit) should find their way into GIT soon.
Other than that, with the approach detailed in my previous post, the build succeeded.
It took about 4 hours with "make -j 2" on my dual core laptop with both cores running at 1.867 GHz.
-
I had to use "-prefix CD\qtbase" option as described in the qt5 git readme file, to get through the configure step without errors. By not specifying the prefix, my mkspec (win32-msvc2010), was searched in "qtbase\bin" instead in "qtbase".
In addition i had to install python, because one of the compilation steps had an python call.
To init the QT Modules I used "git submodule init" and "git submodule update". Are there any magics behind the perl init-submodule script i'm missing (beside submodule selection and git user settings)?
Actually i'm trying to compile the current git master using Win 7 and VS2010 without success.
@ cl -c -FIqt_widgets_pch.h -Yuqt_widgets_pch.h -Fptmp\obj\debug_shared\QtWidgetsd_pch.pch -nologo -Zm200 -Zc:wchar_t -Zi -MDd -W3 -w34100 -w341
89 -MP -GR -EHsc -DQT_SHARED -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQT_BUILD_WIDGETS_LIB -DQT_NO_USING_NAMESPACE -DQT_MAKEDLL -DQT_NO_CAST_TO_ASCI
I -DQT_ASCII_CAST_WARNINGS -DQT_MOC_COMPAT -DQT_USE_QSTRINGBUILDER -D_USE_MATH_DEFINES -DQT_NO_STYLE_MAC -DQT_NO_STYLE_GTK -DQT_NO_STYLE_WINDOWSCE -DQ
T_NO_STYLE_WINDOWSMOBILE -DQ_INTERNAL_QAPP_SRC -DQT_NO_DIRECTWRITE -DQT_DLL -DQT_GUI_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_H
AVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -I"....\include\QtCore" -I"....\include\QtCore\5.0.0" -I"....\include\QtCore\5.0.0\QtCore"
-I"....\include\QtGui\5.0.0" -I"....\include\QtGui\5.0.0\QtGui" -I"....\include\QtGui" -I"....\include" -I"....\include\QtWidgets\5.0.0" -I"....
\include\QtWidgets\5.0.0\QtWidgets" -I"....\include\QtWidgets" -I"....\include" -I"tmp\rcc\debug_shared" -I"tmp" -I"..\3rdparty\wintab" -I"dialogs"
-I"..\3rdparty\harfbuzz\src" -I"tmp\moc\debug_shared" -I"." -I"....\mkspecs\win32-msvc2010" -Fotmp\obj\debug_shared\ @C:\Users\vth\AppData\Local\Temp
\nmDEE9.tmp
qpushbutton.cpp
c:\qt\5.0\qtbase\include\qtwidgets\5.0.0\qtwidgets\private../../../../../src/widgets/dialogs/qdialog_p.h(61) : fatal error C1083: Datei (Include) kan
n nicht geöffnet werden: "QtGui/QPlatformDialogHelper": No such file or directory
NMAKE : fatal error U1077: ""c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\BIN\cl.EXE"": Rückgabe-Code "0x2"
Stop.
NMAKE : fatal error U1077: ""c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\BIN\nmake.exe"": Rückgabe-Code "0x2"
Stop.
NMAKE : fatal error U1077: "cd": Rückgabe-Code "0x2"
Stop.
NMAKE : fatal error U1077: "cd": Rückgabe-Code "0x2"
Stop.@Is there a nightly build process for Qt5 or kind of branch which is stable in the meaning of: at least compilable?
-
Can't configure on ArchLinux x64
bq. No QPA platform plugin enabled!
If you really want to build without a QPA platform plugin you must pass
-no-xcb and -no-wayland to configure. Doing this will produce a Qt that
cannot run GUI applications.But libxcb, mesa and gperf are installed.
Any suggestions?
Thanks. -
Thanks. Verbose helped.
Here is my installed xcb-package list:
extra/libxcb
extra/xcb-proto
extra/xcb-util
extra/xcb-util-image
extra/xcb-util-keysyms
extra/xcb-util-renderutil
extra/xcb-util-wm -
Hello again. I have a new error:
@cd qtsvg/ && make -f Makefile
make[1]: Entering directory/media/data/Additional/Sources/qt5/qtsvg' /media/data/Additional/Sources/qt5/qtbase/bin/qmake QMAKE_ABSOLUTE_SOURCE_PATH=/media/data/Additional/Sources/qt5/qtbase -o Makefile qtsvg.pro QMAKESPEC has not been set, so configuration cannot be deduced. Error processing project file: qtsvg.pro make[1]: *** [Makefile] Error 3 make[1]: Leaving directory
/media/data/Additional/Sources/qt5/qtsvg'
make: *** [module-qtsvg-make_default] Error 2@But all other moduls are build well. Error appears after hour of compilation, not at start.
-
Okay it was probably all broken before as i hadn't installed the right prerequisites (the ubuntu 11.10 prerequisite had not been added to the instructions).
i.e.
[code]on Ubuntu Oneiric:sudo apt-get install libxcb.* libglu1-mesa-dev[/code]
as oppossed to:
[code]on Ubuntu/Debian:sudo aptitude install ~nlibxcb.*
[/code]
I now get this error on compilation:
[code]In file included from ../3rdparty/freetype/src/autofit/autofit.c:23:0:
../3rdparty/freetype/src/autofit/afhints.c: In function ‘af_glyph_hints_reload’:
../3rdparty/freetype/src/autofit/afhints.c:642:21: warning: variable ‘first’ set but not used [-Wunused-but-set-variable]
g++ -c -include .pch/debug-shared/QtPlatformSupport -pipe -g -fvisibility=hidden -fvisibility-inlines-hidden -Wall -W -D_REENTRANT -fPIC -DQT_SHARED -DQT_NO_WAYLAND -DQT_NO_CORESERVICES -DQT_BUILD_PLATFORMSUPPORT_LIB -DQT_NO_CAST_TO_ASCII -DQT_ASCII_CAST_WARNINGS -DQT_MOC_COMPAT -DQT_USE_QSTRINGBUILDER -DQT_NO_CAST_FROM_ASCII -DQT_COMPILES_IN_HARFBUZZ -DQT_NO_FONTCONFIG -DFT2_BUILD_LIBRARY -DQT_COMPILES_IN_HARFBUZZ -DQT_GUI_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_HAVE_SSE3 -DQT_HAVE_SSSE3 -DQT_HAVE_SSE4_1 -DQT_HAVE_SSE4_2 -DQT_HAVE_AVX -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -I../../mkspecs/linux-g++ -I. -I../../include/QtCore -I../../include/QtCore/5.0.0 -I../../include/QtCore/5.0.0/QtCore -I../../include/QtGui/5.0.0 -I../../include/QtGui/5.0.0/QtGui -I../../include/QtGui -I../../include -I../../include/QtPlatformSupport/5.0.0 -I../../include/QtPlatformSupport/5.0.0/QtPlatformSupport -I../../include/QtPlatformSupport -I../../include -I.rcc/debug-shared -I../3rdparty/harfbuzz/src -I../3rdparty/freetype/builds/unix -I../3rdparty/freetype/src -I../3rdparty/freetype/include -I/usr/X11R6/include -I.moc/debug-shared -o .obj/debug-shared/qglxconvenience.o glxconvenience/qglxconvenience.cpp
glxconvenience/qglxconvenience.cpp:47:36: fatal error: X11/extensions/Xrender.h: No such file or directory
compilation terminated.
make[2]: *** [.obj/debug-shared/qglxconvenience.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[2]: Leaving directory/home/daniel/qt5/qtbase/src/platformsupport' make[1]: *** [sub-platformsupport-make_default-ordered] Error 2 make[1]: Leaving directory
/home/daniel/qt5/qtbase'
make: *** [module-qtbase-make_default] Error 2
[/code]So i was trying to work out what i was missing in terms of dependencies. Considering i installed libglu1-mesa-dev i am not sure.
-
[quote author="werispaul" date="1328263852"]Actually i'm trying to compile the current git master using Win 7 and VS2010 without success.[/quote]
Finally got it working. In between I've switched from Strawberry Perl to ActivePerl. I'm not sure if it was the crux, but an option to keep in mind (as well as the order of perl in the system PATH, saw the wiki note quite late). -
Let me join the ranks of people, for whom building Qt5 has failed.
Using gcc 4.6.2 in Windows 7 x64 environment.
The last console output before building failed (after spending 3 hours on it :( )
bq. mingw32-make[3]: Leaving directory
C:/Users/Dian/qt5/qtbase/src/widgets' mingw32-make[2]: Leaving directory
C:/Users/Dian/qt5/qtbase/src/widgets'
cd src\testlib\ && mingw32-make -f Makefile
mingw32-make[2]: Entering directoryC:/Users/Dian/qt5/qtbase/src/testlib' mingw32-make -f Makefile.Debug all mingw32-make[3]: Entering directory
C:/Users/Dian/qt5/qtbase/src/testlib'
g++ -c -fno-keep-inline-dllexport -g -Wall -frtti -fexceptions -mthreads -DQT_SH
ARED -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_NO_CAST_TO_ASCII -DQT_NO_CAST_FROM_AS
CII -DQTESTLIB_MAKEDLL -DQT_NO_DATASTREAM -DQT_MAKEDLL -DQT_ASCII_CAST_WARNINGS
-DQT_MOC_COMPAT -DQT_USE_QSTRINGBUILDER -D_USE_MATH_DEFINES -DQT_DLL -DQT_CORE_L
IB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -
I"....\include\QtCore" -I"....\include" -I"." -I"....\include\QtTest\5.0.0" -
I"....\include\QtTest\5.0.0\QtTest" -I"....\include\QtTest" -I"....\include"
-I"tmp\rcc\debug_shared" -I"tmp" -I"tmp\moc\debug_shared" -I"....\mkspecs\win32
-g++" -o tmp\obj\debug_shared\qtestcase.o qtestcase.cpp
qtestcase.cpp:73:21: fatal error: crtdbg.h: No such file or directory
compilation terminated.
mingw32-make[3]: *** [tmp/obj/debug_shared/qtestcase.o] Error 1
mingw32-make[3]: Leaving directoryC:/Users/Dian/qt5/qtbase/src/testlib' mingw32-make[2]: *** [debug-all] Error 2 mingw32-make[2]: Leaving directory
C:/Users/Dian/qt5/qtbase/src/testlib'
mingw32-make[1]: *** [sub-testlib-make_default-ordered] Error 2
mingw32-make[1]: Leaving directory `C:/Users/Dian/qt5/qtbase'
mingw32-make: *** [module-qtbase-make_default] Error 2Any ideas?
The missing file I actually do have on my PC, in:
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\crt\src\crtdbg.h
But what does it have to do with anything, since I am using the GCC toolchain?Also, when I configured Qt I used "-nomake tests" - shouldn't that result in skipping qttest?
-
git clone git://gitorious.org/qt/qt5.git qt5
"Building Qt5 from Git.":http://developer.qt.nokia.com/wiki/Building_Qt_5_from_Git
-
@oneWonders: I just updated the package dependencies on the wiki, hope all are listed now (it's not that often that one has a clean system to start on ;)
@werispaul: Yes, you need ActiveState perl, and actually also a recent version. But the wiki page already points that out...
@ddriver: No idea. All I can tell you is that most people developing Qt on Windows are using MSVC compilers (MSVC2008, MSVC2010).