Qt5 development primer
- 
Re: building QWebkit on Windows: 
 The reason for the build failure are the following lines in qtwebkit/Source/WTF/WTF.pri:
 @ contains(QT_CONFIG,icu) {
 LIBS += -licui18n -licuuc -licudata
 } else {
 error("To build QtWebKit with Qt 5 you need ICU")
 }
 @I could not find a way to include icu in QT_CONFIG, but a brute force approach (for testing purposes) would be to remove the contains query and include the 3 icu libraries unconditionally. 
- 
hmuelner: That is a different problem, I believe. As stated in "Building_Qt_5_from_Git":http://developer.qt.nokia.com/wiki/Building_Qt_5_from_Git : WebKit doesn’t compile, missing ICU Currently there is no configure time check for ICU, so install it through the package manager through 
 on Ubuntu/Debian:sudo apt-get install libicu-devon Fedora: yum search ICUAlternatively you can also compile Qt without webkit by deleting / renaming the qtwebkit, qtwebkit-examples-and-demos directories. The -no-webkit option of configure does not work yet : https://bugreports.qt-project.org/browse/QTBUG-20577 
- 
Hello, I have tried to compile Qt5 under archlinux and under mac os, but in both cases I have got the same errors: bq. 
 cd qtsvg/ && make -f Makefile
 cd qtphonon/ && make -f Makefile
 cd qtxmlpatterns/ && make -f Makefile
 make[1]: Entering directory/home/kondr/Documents/qt5/qtxmlpatterns' /home/kondr/Documents/qt5/qtbase/bin/qmake QMAKE_ABSOLUTE_SOURCE_PATH=/home/kondr/Documents/qt5/qtbase -o Makefile qtxmlpatterns.pro Could not find mkspecs for your QMAKESPEC(default) after trying: /home/kondr/Documents/qt5/qtxmlpatterns/mkspecs /home/kondr/Documents/qt5/qt5/mkspecs make[1]: *** [Makefile] Error 3 make[1]: Leaving directory/home/kondr/Documents/qt5/qtxmlpatterns'
 make: *** [module-qtxmlpatterns-make_default] Error 2
 make: *** Waiting for unfinished jobs....
 make[1]: Entering directory/home/kondr/Documents/qt5/qtsvg' /home/kondr/Documents/qt5/qtbase/bin/qmake QMAKE_ABSOLUTE_SOURCE_PATH=/home/kondr/Documents/qt5/qtbase -o Makefile qtsvg.pro Could not find mkspecs for your QMAKESPEC(default) after trying: /home/kondr/Documents/qt5/qtsvg/mkspecs /home/kondr/Documents/qt5/qt5/mkspecs make[1]: *** [Makefile] Error 3 make[1]: Leaving directory/home/kondr/Documents/qt5/qtsvg'
 make: *** [module-qtsvg-make_default] Error 2
 make[1]: Entering directory/home/kondr/Documents/qt5/qtphonon' /home/kondr/Documents/qt5/qtbase/bin/qmake QMAKE_ABSOLUTE_SOURCE_PATH=/home/kondr/Documents/qt5/qtbase -o Makefile qtphonon.pro Could not find mkspecs for your QMAKESPEC(default) after trying: /home/kondr/Documents/qt5/qtphonon/mkspecs /home/kondr/Documents/qt5/qt5/mkspecs make[1]: *** [Makefile] Error 3 make[1]: Leaving directory/home/kondr/Documents/qt5/qtphonon'
 make: *** [module-qtphonon-make_default] Error 2I have used the next command: bq. git clone git://gitorious.org/qt/qt5.git qt5 && cd qt5 && perl init-repository && export PATH="$PWD/qtbase/bin:$PATH" && ./configure -prefix $PWD/qt5 -opensource -confirm-license -nomake tests -nomake examples && make -j3 In addition I would like to know how to compile Qt 5 for a special arch? (for example, how to compile Qt 5 for i386 arch on x86_64 OS?) 
- 
I made some progress (but did not succeed) with compiling the current git version of qtwebkit with vs2010 in windows7(64): My Qt directory is in d:\Qt\qt5. - 
I created an additional system cpp directory in d:\cpp with an include and a lib subdirectory 
- 
I add two variables to my system environment: INCLUDE=d:\cpp\include and LIB=d:\cpp\lib and started a new Visual Studio Command Prompt. 
- 
I copied qedit.h from the Windows SDK 6.0A to d:\cpp\include 
- 
I got the ICU libraries form http://download.icu-project.org/files/icu4c/4.8.1.1/icu4c-4_8_1_1-Win32-msvc10.zip 
- 
I copied the icu headers ti d:\cpp\include 
- 
I copied the icu lib files (*.lib and *.dll) to d:\Qt\qt5\qtbase\lib 
- 
I renamed icuin.lib to icui18n.lib, icuind.lib to icui18nd.lib and icudt.lib to icudata.lib 
- 
I got ftp://sources.redhat.com/pub/pthreads-win32/pthreads-w32-2-8-0-release.exe for the pthread library 
- 
I copied the pthreads headers and libraries to d:\cpp\include and d:\cpp\lib 
- 
I changed one subroutine in d:/Qt/qt5/qtwebkit/Tools/Scripts/webkitdirs.pm to the following code (because the mkspec can be a ;-separated path list): 
 @sub retrieveQMakespecVar
 {
 my $mkspec = $[0];
 my $varname = $[1];my $varvalue = undef; 
 #print "retrieveMakespecVar " . $mkspec . ", " . $varname . "\n";
 my @mkspecs = split(/;/,$mkspec);
 foreach $mkspec (@mkspecs) {
 local SPEC;
 open (SPEC, "<$mkspec") or next;
 while (<SPEC>) {
 if ($_ =~ /\sinclude((.+))/) {
 # open the included mkspec
 my $oldcwd = getcwd();
 (my $volume, my $directories, my $file) = File::Spec->splitpath($mkspec);
 my $newcwd = "$volume$directories";
 chdir $newcwd if $newcwd;
 $varvalue = retrieveQMakespecVar($1, $varname);
 chdir $oldcwd;
 } elsif ($_ =~ /$varname\s*=\s*([^\s]+)/) {
 $varvalue = $1;
 last;
 }
 }
 close SPEC;
 last if defined($varvalue);
 }
 return $varvalue;
 }@
- 
sub retrieveQMakespecVar 
 {
 my $mkspec = $[0];
 my $varname = $[1];my $varvalue = undef; 
 #print "retrieveMakespecVar " . $mkspec . ", " . $varname . "\n";
 my @mkspecs = split(/;/,$mkspec);
 foreach $mkspec (@mkspecs) {
 local SPEC;
 open (SPEC, "<$mkspec") or next;
 while (<SPEC>) {
 if ($_ =~ /\sinclude((.+))/) {
 # open the included mkspec
 my $oldcwd = getcwd();
 (my $volume, my $directories, my $file) = File::Spec->splitpath($mkspec);
 my $newcwd = "$volume$directories";
 chdir $newcwd if $newcwd;
 $varvalue = retrieveQMakespecVar($1, $varname);
 chdir $oldcwd;
 } elsif ($_ =~ /$varname\s*=\s*([^\s]+)/) {
 $varvalue = $1;
 last;
 }
 }
 close SPEC;
 last if defined($varvalue);
 }
 return $varvalue;
 }
 @
- 
sub retrieveQMakespecVar 
 {
 my $mkspec = $[0];
 my $varname = $[1];my $varvalue = undef; 
 #print "retrieveMakespecVar " . $mkspec . ", " . $varname . "\n";
 my @mkspecs = split(/;/,$mkspec);
 foreach $mkspec (@mkspecs) {
 local SPEC;
 open (SPEC, "<$mkspec") or next;
 while (<SPEC>) {
 if ($_ =~ /\sinclude((.+))/) {
 # open the included mkspec
 my $oldcwd = getcwd();
 (my $volume, my $directories, my $file) = File::Spec->splitpath($mkspec);
 my $newcwd = "$volume$directories";
 chdir $newcwd if $newcwd;
 $varvalue = retrieveQMakespecVar($1, $varname);
 chdir $oldcwd;
 } elsif ($_ =~ /$varname\s*=\s*([^\s]+)/) {
 $varvalue = $1;
 last;
 }
 }
 close SPEC;
 last if defined($varvalue);
 }
 return $varvalue;
 }
 @
 (Continued in next post)
 
- 
- 
(Continued) - cd d:\Qt\qt5\qtwebkit
- set PATH=%PATH%;d:\Qt\qt5\gnuwin32\bin
- set QMAKEPATH=D:\Qt\qt5\qtwebkit\Tools\qmake
- perl Tools\Scripts\build-webkit --qt
 It now fails in qtwebkit\Source\WebCore: nmake.exe -f Makefile.WebCore.DerivedSources breaks with: NMAKE : fatal error U1095: expanded command line 'echo D:/Qt/qt5/qtwebkit/Source/WebCore/Modules/geolocation/Geolocation.idl ...[lots of idl files] ... | tr ' ' '\n' > generated/idl_files.tmp && perl -ID:/Qt/qt5/qtwebkit/Source/WebCore/bindings/scripts D:/Qt/qt5/qtwebkit/Source/WebCore/bindings/scripts/resolve-supplemental.pl --defines "LANGUAGE_JAVASCRIPT=1 ENABLE_CHANNEL_MESSAGING=1 ENABLE_SQL_DATABASE=1 ENABLE_DATALIST=1 ENABLE_WORKERS=1 ENABLE_SHARED_WORKERS=1 ENABLE_XSLT=1 ENABLE_FILTERS=1 ENABLE_CSS_FILTERS=1 ENABLE_SVG=1 ENABLE_JAVASCRIPT_DEBUGGER=1 ENABLE_WEB_SOCKETS=1 ENABLE_WEB_TIMING=1 ENABLE_TOUCH_EVENTS=1 ENABLE_GESTURE_EVENTS=1 WTF_USE_TILED_BACKING_STORE=1 ENABLE_NOTIFICATIONS=1 ENABLE_DETAILS=1 ENABLE_METER_TAG=1 ENABLE_PROGRESS_TAG=1 ENABLE_BLOB=1 ENABLE_REQUEST_ANIMATION_FRAME=1" --idlFilesList generated/idl_files.tmp --supplementalDependencyFile generated/supplemental_dependency.tmp --idlAttributesFile D:/Qt/qt5/qtwebkit/Source/WebCore/bindings/scripts/IDLAttributes.txt --preprocessor "D:\Qt\qt5\qtbase\bin\moc.exe -E"' too long (the command line is approx. 31400 characters long). Does anybody have an idea how to fix this section in DerivedSources.pri? 
 @resolveSupplemental.input = IDL_ATTRIBUTES_FILE
 resolveSupplemental.script = $$RESOLVE_SUPPLEMENTAL_SCRIPTFIXME : We need to use only perl at some point.resolveSupplemental.commands = echo $$IDL_BINDINGS | tr ' ' '\n' > $$IDL_FILES_TMP && 
 perl -I$$PWD/bindings/scripts $$resolveSupplemental.script
 --defines "$${FEATURE_DEFINES_JAVASCRIPT}"
 --idlFilesList $$IDL_FILES_TMP
 --supplementalDependencyFile ${QMAKE_FUNC_FILE_OUT_PATH}/$$SUPPLEMENTAL_DEPENDENCY_FILE
 --idlAttributesFile $${IDL_ATTRIBUTES_FILE}
 --preprocessor "$${QMAKE_MOC} -E"
 resolveSupplemental.output = $$SUPPLEMENTAL_DEPENDENCY_FILE
 resolveSupplemental.add_output_to_sources = false
 resolveSupplemental.depends = $$PWD/bindings/scripts/IDLParser.pm $$IDL_BINDINGS
 GENERATORS += resolveSupplemental
 @
- 
Build qt5 on Windows 7 with VS2010 (next try, hope this is not a double post). I tried again with the version from 2012-03-21 with this configuration: configure -confirm-license -opensource -debug-and-release -platform win32-msvc2010 -fast -mp -opengl desktop -nomake tests -nomake examples nmake generated the following files in qtbase/bin: qmake.exe 
 moc.pdb
 moc.ilk
 moc.exe
 rcc.pdb
 rcc.ilk
 rcc.exe
 qdoc.pdb
 qdoc.ilk
 qdoc.exe
 uic.pdb
 uic.ilk
 uic.exe
 QtCored5.dll
 QtCore5.dll
 QtNetworkd5.dll
 QtNetwork5.dll
 QtSqld5.dll
 QtSql5.dll
 QtGuid5.dll
 QtGui5.dll
 QtXmld5.dll
 QtXml5.dll
 QtWidgetsd5.dll
 QtWidgets5.dll
 QtTestd5.dll
 QtTest5.dll
 QtPrintSupportd5.dll
 QtPrintSupport5.dll
 QtConcurrentd5.dll
 QtConcurrent5.dll
 QtOpenGLd5.dll
 QtOpenGL5.dll
 QtSvgd5.dll
 QtSvg5.dll
 phonond5.dll
 phonon5.dll
 QtXmlPatternsd5.dll
 QtXmlPatterns5.dll
 xmlpatterns.ilk
 xmlpatterns.pdb
 xmlpatterns.exe
 xmlpatternsvalidator.pdb
 xmlpatternsvalidator.ilk
 xmlpatternsvalidator.exe
 QtScriptd5.dll
 QtScript5.dll
 QtScriptToolsd5.dll
 QtScriptTools5.dll
 QtV8d5.dll
 QtV85.dll
 QtQmld5.dll
 QtQml5.dll
 QtQuickd5.dll
 QtQuick5.dll
 QtQuickTestd5.dll
 QtQuickTest5.dll
 qmlscene.ilk
 qmlscene.pdb
 qmlscene.exe
 qmlplugindump.ilk
 qmlplugindump.pdb
 qmlplugindump.exe
 qmlmin.pdb
 qmlmin.ilk
 qmlmin.exe
 qmlprofiler.pdb
 qmlprofiler.ilk
 qmlprofiler.exe
 qmltestrunner.pdb
 qmltestrunner.ilk
 qmltestrunner.exe
 QtQuick1d5.dll
 QtQuick15.dll
 qmlviewer.ilk
 qmlviewer.pdb
 qmlviewer.exe
 idc.ilk
 idc.pdb
 idc.exeBuilding of webkit failed when trying to link jsc.exe with a lot of warnings about importing locally defined symbols from JavaScriptCore.lib and 24 unresolved external symbols: 
 JSC::evaluate
 JSC::checkSyntax
 WTF::randomNumber
 WTF::createThread
 WTF::MetaAllocatorHandle::~MetaAllocatorHandle (12 times)
 WTF::MetaAllocator::freeFreeSpaceNode
 WTF::PassRefPtr<class WTF::MetaAllocatorHandle>
 WTF::MetaAllocator::MetaAllocator
 WTF::cryptographicallyRandomNumber (4 times)Any guesses how to correct this? 
- 
Build qt5 on Windows 7 with VS2010 (continued) I could build all other modules (using nmake module-xxx) out of the box with the exception of qtmodule where moc could not parse dsserviceplugin.h because of a comma in Q_PLUGIN_METADATA. After correcting this it also built successfully. 
- 
Hi, I am trying to build Qt5 on Chakra Linux. I have Xcb libraries installed, but when I start configuration script I get an error saying: @No QPA platform plugin enabled! 
 If you really want to build without a QPA platform plugin you must pass
 -no-xcb and -no-eglfs to configure. Doing this will
 produce a Qt that cannot run GUI applications.
 The dependencies needed for xcb to build are listed in
 src/plugins/platforms/xcb/README@What I am missing here ? 
- 
i am facing compilation error in building qt5 (not webkit yet) 
 I am using Ubuntu, with all xcb and other dependency installed using apt-getconfigure was successful, whereas build failed in "wayland" (error log below). 
 Any clue on the wayland header files mismatch or version problems?@ 
 _make[4]: Entering directory `/home/xyz/build/newqt5/qt5/qtwayland/src/plugins/platforms/wayland'
 g++ -c -pipe -g -fvisibility=hidden -fvisibility-inlines-hidden -D_REENTRANT -Wall -W -fPIC -DQT_NO_LIBUDEV -DQ_PLATFORM_WAYLAND -DQT_NO_WAYLAND_XKB -DQT_WAYLAND_GL_SUPPORT -DQT_WAYLAND_WINDOWMANAGER_SUPPORT -DQ_FONTCONFIGDATABASE -DQT_COMPILES_IN_HARFBUZZ -DQT_PLUGIN -DQT_GUI_LIB -DQT_CORE_LIB -I/home/xyz/build/newqt5/qt5/qtbase/mkspecs/linux-g++ -I. -I/home/xyz/build/newqt5/qt5/qtbase/include/QtCore/5.0.0 -I/home/xyz/build/newqt5/qt5/qtbase/include/QtCore/5.0.0/QtCore -I/home/xyz/build/newqt5/qt5/qtbase/include/QtCore -I/home/xyz/build/newqt5/qt5/qtbase/include/QtGui/5.0.0 -I/home/xyz/build/newqt5/qt5/qtbase/include/QtGui/5.0.0/QtGui -I/home/xyz/build/newqt5/qt5/qtbase/include/QtGui -I/home/xyz/build/newqt5/qt5/qtbase/include/QtPlatformSupport/5.0.0 -I/home/xyz/build/newqt5/qt5/qtbase/include/QtPlatformSupport/5.0.0/QtPlatformSupport -I/home/xyz/build/newqt5/qt5/qtbase/include/QtPlatformSupport -I/home/xyz/build/newqt5/qt5/qtbase/include -I../../../shared -Igl_integration/xcomposite_share -I.moc/debug-shared -o .obj/debug-shared/qwaylandintegration.o qwaylandintegration.cpp
 In file included from qwaylandshmwindow.h:45:0,
 from qwaylandintegration.cpp:46:
 qwaylandwindow.h:112:18: error: ‘wl_callback_listener’ does not name a type
 make[4]: *** [.obj/debug-shared/qwaylandintegration.o] Error 1
 _
 @
- 
Issue is solved after downloading the release from 
 http://releases.qt-project.org/qt5.0/alpha/instead of GIT [quote author="subbul" date="1333560508"] i am facing compilation error in building qt5 (not webkit yet) 
 I am using Ubuntu, with all xcb and other dependency installed using apt-getconfigure was successful, whereas build failed in "wayland" (error log below). 
 Any clue on the wayland header files mismatch or version problems?@ 
 _make[4]: Entering directory `/home/xyz/build/newqt5/qt5/qtwayland/src/plugins/platforms/wayland'
 g++ -c -pipe -g -fvisibility=hidden -fvisibility-inlines-hidden -D_REENTRANT -Wall -W -fPIC -DQT_NO_LIBUDEV -DQ_PLATFORM_WAYLAND -DQT_NO_WAYLAND_XKB -DQT_WAYLAND_GL_SUPPORT -DQT_WAYLAND_WINDOWMANAGER_SUPPORT -DQ_FONTCONFIGDATABASE -DQT_COMPILES_IN_HARFBUZZ -DQT_PLUGIN -DQT_GUI_LIB -DQT_CORE_LIB -I/home/xyz/build/newqt5/qt5/qtbase/mkspecs/linux-g++ -I. -I/home/xyz/build/newqt5/qt5/qtbase/include/QtCore/5.0.0 -I/home/xyz/build/newqt5/qt5/qtbase/include/QtCore/5.0.0/QtCore -I/home/xyz/build/newqt5/qt5/qtbase/include/QtCore -I/home/xyz/build/newqt5/qt5/qtbase/include/QtGui/5.0.0 -I/home/xyz/build/newqt5/qt5/qtbase/include/QtGui/5.0.0/QtGui -I/home/xyz/build/newqt5/qt5/qtbase/include/QtGui -I/home/xyz/build/newqt5/qt5/qtbase/include/QtPlatformSupport/5.0.0 -I/home/xyz/build/newqt5/qt5/qtbase/include/QtPlatformSupport/5.0.0/QtPlatformSupport -I/home/xyz/build/newqt5/qt5/qtbase/include/QtPlatformSupport -I/home/xyz/build/newqt5/qt5/qtbase/include -I../../../shared -Igl_integration/xcomposite_share -I.moc/debug-shared -o .obj/debug-shared/qwaylandintegration.o qwaylandintegration.cpp
 In file included from qwaylandshmwindow.h:45:0,
 from qwaylandintegration.cpp:46:
 qwaylandwindow.h:112:18: error: ‘wl_callback_listener’ does not name a type
 make[4]: *** [.obj/debug-shared/qwaylandintegration.o] Error 1
 _
 @[/quote]
- 
i building qt5 with wingw32,but have a error: qsvgstyle_p.h:65:20: qdebug.h:No such file or directory 
- 
I just happened to notice your posts - I didn't get an email notification. According to configure, "To reconfigure, run 'make confclean' and 'configure'.". 
 Well you probably know that at least with Qt5 alpha, that doesn't work.I'm on Debian so I can't offer any Windows wisdom, but for "make clean" I just delete the directory and re-unpack the alpha .tar.bz2 again. I'm in the dark as to how to build/use the QtDeclarative component. 
 It appears that the header I'm looking for - "QtDeclarative/QDeclarativeComponent" isn't installed although it's in the source tree - yes I built/installed qtjsbackend and qtdeclarative.Also, it would be nice if Qt5 beta had a top-level makefile that included targets for 
 linux-x86-32-gcc-x11
 linux-x86-64-gcc-x11
 windows7-64-msvc2010and so on, so we could be sure we're building against a known and tested build configuration. And yes, it should fail if any prerequisites are missing (and maybe print warnings if they are different versions). 
- 
Hi All, I'm trying to building Qt5 om Mac OSX 10.7. Following the instructions given here: http://qt-project.org/wiki/Building_Qt_5_from_Git However, I'm running into an issue in the build-step which I'm not 
 sure how to solve. One of the errors I'm getting is the following:gcc: error: tools/qlocale_mac.mm: Objective-C++ compiler not installed 
 on this systemI will give a detailed step-by-step descriptions of my process below, 
 assuming the starting point to be a blank shell with PWD=$HOME:(1) git clone git://gitorious.org/qt/qt5.git qt5 [check!] (2) cd qt5 [check!] :) (3) perl init-repository --no-webkit [check! Does its job without complaining. I can provide the log if necessary] (4) unset QTDIR [check!] :) (5) export PATH="$PWD/qtbase/bin:$PWD/qtrepotools/bin:$PATH" [check!] :) (6) ./configure -developer-build -opensource -nomake examples -nomake 
 tests [check! See below]Get a few warnings about some Qt header not containing macros, e.g.: QtCore: WARNING: 
 /Users/thinks/qt5/qtbase/src/corelib/qtcoreversion.h does
 not include QT_BEGIN_HEADERbut they don't seem severe. Other relevant output: Build type: macx-clang 
 Architecture: x86_64
 Host architecture: x86_64
 Platform notes:- Also available for Mac OS X: macx-g++
 (7) ./build -j 4 This is where the trouble begins. The following (first) error is given: [Lots of output without errors...] 
 qabstractanimation.h -o .moc/debug-shared/moc_qabstractanimation.cpp
 gcc: error: tools/qlocale_mac.mm: Objective-C++ compiler not installed
 on this system
 gcc: error: kernel/qcore_mac_objc.mm: Objective-C++ compiler not
 installed on this systemSimilar errors are reported further on as well, all with the same 
 reason given. It seems somewhat strange that gcc is used over g++, but
 at the moment I'm not really sure why this happens.Some info about gcc: [thinks@wiggs ~] gcc --version 
 gcc (GCC) 4.8.0 20120408 (experimental)Any advice greatly appreciated! Thanks, T 
- 
Thanks, Ludde! :) We finally got it working here. The following was required: - 
Grab latest from Qt5 git repo. 
 git clone git://gitorious.org/qt/qt5.git qt5
- 
Use Qt's provided tool to initialize the repo. 
 cd qt5
 perl init-repository --no-webkit
- 
Set up our build environment. 
 unset QTDIR
 export PATH="$PWD/qtbase/bin:$PWD/qtrepotools/bin:$PATH"
 export PATH=/Applications/XCode.app/Contents/Developer/usr/bin:$PATH
 export CPP=clang++
 export CC=clang
 echo PATH $PATH
- 
Pre-build configuration. Note that we are forcing it to build using 
 the Xcode compilers.
 ./configure -no-pch -developer-build -confirm-license -opensource
 -release -nomake demos -nomake examples -arch x86 -sdk
 /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk
- 
Build. We could increase the number of course to improve speed once 
 we are convinced that this works well...
 ./build -j 1
 Not sure all of that stuff is required though, but because the build time is quite steep (even with j > 1) we didn't have time to narrow it down. Cheers, T 
- 
