commercially, along with the supporting Ecere runtime library(ies).
ZAC's Blog for sharing programming related stuffs, focus on free stuffs, occasionally will talk about paid solutions.
Translate
2014/01/22
Ecere SDK
commercially, along with the supporting Ecere runtime library(ies).
2014/01/03
Compile Qt 5.2.0 with ICU
2013/12/24
Compile QT 5.2.0
Instructions to build Qt
This is my own experimented instructions for building Qt 5.2.0 shared (debug and release) and static (release only) libraries which can be used to compile programs using dll and run on Windows XP SP3.Why build Qt by myself
The reason why I need to compile Qt by myself is that:- Qt 5.2.0 official version cannot compile programs using dll that can be run on Windows XP SP3 as the tool chains not import some code from msvcrt.dll and causing exception when deployed on Windows XP SP3 (at least for my own program and dll)
- Qt Creator 3.0.0 official version requires installation of Microsoft VC Runtime, as it seems to be built by Microsoft Visual C++, I need a portable version, preferred not to install anything before used
Require files to be downloaded:
In order to build Qt by yourself, you need to download the followings:- Qt5.2.0 (http://download.qt-project.org/official_releases/qt/5.2/5.2.0/single/qt-everywhere-opensource-src-5.2.0.zip)
- OpenSSL runtime (http://download.qt-project.org/development_releases/prebuilt/mingw_32/openssl-mingw-builds-runtime.7z)
- Python v2.7x or above (http://download.qt-project.org/development_releases/prebuilt/gdb/build-prerequisites/python.zip)
- MinGW (http://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win32/Personal%20Builds/mingw-builds/4.8.2/threads-posix/sjlj/i686-4.8.2-release-posix-sjlj-rt_v3-rev1.7z/download)
- Perl(v5.14 or above) (http://www.activestate.com/activeperl/downloads/thank-you?dl=http://downloads.activestate.com/ActivePerl/releases/5.16.3.1603/ActivePerl-5.16.3.1603-MSWin32-x86-296746.msi)
Building Environment
The environment that I used to build are as follow:- Windows 7 Ultimate version
- UAC disabled (Otherwise, compilation may failed due to file access)
- Set Anti Virsus program to exclude the build directory and its sub-directory to speed up compilation (Also, some of the examples compiled will be identified as suspected malwares by say Symantec. If you are reluctant with this, add "-nomake examples" to the configure options).
Build directory structure
The directory structure that I used is as follow (originally want to have webkit built):z:\QtBuild
├─5.2.0
│ ├─mingw32
│ └─mingw32-s
├─bin
│ ├─mingw32
│ └─QtCreator
└─work
├─build
│ ├─mingw32
│ └─mingw32-s
└─tools
├─mingw32
├─perl
└─python
Preparation
- unzip MinGW (i686-4.8.2-release-posix-sjlj-rt_v3-rev1.7z) to z:\QtBuild\work\tools
- unzip MinGW (i686-4.8.2-release-posix-sjlj-rt_v3-rev1.7z) to z:\QtBuild\bin
- unzip python (python.zip) to z:\QtBuild\work\tools
- install perl (ActivePerl-5.16.3.1603-MSWin32-x86-296746.msi) to z:\QtBuild\work\tools
- unzip OpenSSL runtime (openssl-mingw-builds-runtime.7z) to z:\QtBuild\5.2.0\mingw32 and z:\QtBuild\5.2.0\mingw32-s
- unzip qt-everywhere-opensource-src-5.2.0.zip to z:\QtBuild\work\build then rename folder "qt-everywhere-opensource-src-5.2.0" to "mingw32"
- unzip again qt-everywhere-opensource-src-5.2.0.zip to z:\QtBuild\work\build then rename folder "qt-everywhere-opensource-src-5.2.0" to "mingw32-s" (if you want to build the static version)
- unzip qt-creator-opensource-src-3.0.0.zip to z:\QtBuild\work\build then rename folder "qt-creator-opensource-src-3.0.0" to "qtc-3.0.0"
- copy libgcc_s_sjlj-1.dll, libstdc++-6.dll and libwinpthread-1.dll from z:\QtBuild\work\tools\mingw32\bin to z:\QtBuild\5.2.0\mingw32
Patching files for static build
Skip this if you don't need static build.Open z:\QtBuild\work\build\mingw32-s\qtbase\mkspecs\win32-g++\qmake.conf with a text editor (e.g. Notepad)
Modify line 69 from
QMAKE_LFLAGS =to
QMAKE_LFLAGS = -Wl,-Bstatic -lwinpthread -static -static-libgcc -static-libstdc++and line 76 from
QMAKE_LFLAGS_DLL = -sharedto
QMAKE_LFLAGS_DLL = -Wl,-Bstatic -lwinpthread -static -static-libgcc -static-libstdc++
then save it.
Open z:\QtBuild\work\build\mingw32-s\qtbase\qmake\Makefile.win32 with a text editor
Modify line 50 from
LFLAGS =to
LFLAGS = -static -static-libgcc -static-libstdc++
then save it.
Building Qt (shared lib debug-and-release version)
This will build Qt shared libraries with sqlite, odbc, openssl, opengl desktop. For details of the configure options, please check with (http://qt-project.org/doc/qt-5/configure-options.html) or issue "configure.bat -platform win32-g++ --help" in Windows Command Prompt.Start a Windows Command Prompt and issue the following commands:
- set PATH="z:\QtBuild\work\build\5.2.0\mingw32\bin;z:\QtBuild\work\build\5.2.0\mingw32\qtbase\bin;z:\QtBuild\work\build\5.2.0\mingw32\qtrepotools\bin;z:\QtBuild\work\build\5.2.0\mingw32\gnuwin32\bin;z:\QtBuild\work\tools\mingw32\bin;z:\QtBuild\work\tools\mingw32\opt\bin;z:\QtBuild\work\tools\perl\bin;z:\QtBuild\work\tools\python;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;"
- set "MAKE_COMMAND="
- set "QMAKESPEC="
- set "QTDIR=" set "DXSDK_DIR="
- cd /d z:\QtBuild\work\build\mingw32
- configure.bat -confirm-license -opensource -prefix "z:\QtBuild\5.2.0\mingw32" -shared -debug-and-release -platform win32-g++ -qt-sql-sqlite -qt-sql-odbc -D _CRT_SECURE_NO_WARNINGS -mp -no-vcproj -opengl desktop -no-angle -no-icu -skip webkit -openssl
- cd /d z:\QtBuild\work\build\mingw32
- mingw32-make
Building Qt (static lib release version)
This will build Qt shared libraries with sqlite, odbc, openssl, opengl desktop. For details of the configure options, please check with (http://qt-project.org/doc/qt-5/configure-options.html) or issue "configure.bat -platform win32-g++ --help" in Windows Command Prompt.Start a Windows Command Prompt and issue the following commands:
- set PATH="z:\QtBuild\work\build\5.2.0\mingw32-s\bin;z:\QtBuild\work\build\5.2.0\mingw32-s\qtbase\bin;z:\QtBuild\work\build\5.2.0\mingw32-s\qtrepotools\bin;z:\QtBuild\work\build\5.2.0\mingw32-s\gnuwin32\bin;z:\QtBuild\work\tools\mingw32\bin;z:\QtBuild\work\tools\mingw32\opt\bin;z:\QtBuild\work\tools\perl\bin;z:\QtBuild\work\tools\python;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;"
- set "MAKE_COMMAND="
- set "QMAKESPEC="
- set "QTDIR=" set "DXSDK_DIR="
- cd /d z:\QtBuild\work\build\mingw32-s
- configure.bat -confirm-license -opensource -prefix "z:\QtBuild\5.2.0\mingw32-s" -static -release -platform win32-g++ -qt-sql-sqlite -qt-sql-odbc -D _CRT_SECURE_NO_WARNINGS -mp -no-vcproj -opengl desktop -no-angle -no-icu -skip webkit -openssl -nomake examples -nomake tests -qt-libpng -qt-libjpeg -qt-pcre -qt-freetype -qt-zlib -ltcg
- cd /d z:\QtBuild\work\build\mingw32-s
- mingw32-make
QtCreator 3.0.0
I've not built QtCreator 3.0.0 by myself as I always got a debug build instead of release one. So I used one of the prebuilt one (http://sourceforge.net/projects/mingwbuilds/files/external-binary-packages/x32-Qt-5.2.0%2BQtCreator-3.0.0-%28gcc-4.8.2-dwarf%29.7z/download) I can find instead. The download also contain the qtbinpatcher.exe which is very useful for you to make your Qt tools set portable.- unzip x32-Qt-5.2.0+QtCreator-3.0.0-(gcc-4.8.2-dwarf).7z to z:\QtBuild\bin and then rename the folder "Qt-5.2.0-i686" to QtCreator.
Make it Portable
To deploy the Qt and QtCreator, you only need the 5.2.0 and bin folders. To make this portable, create a batch file say QtCreatorPortable.bat under z:\QtBuild with the following contents:@echo off
cls
if exist "%~dp05.2.0\mingw32\bin\qmake.exe" "%~dp0bin\QtCreator\qtbinpatcher.exe" --verbose --qt-dir="%~dp05.2.0\mingw32" --nobackup > NUL
if exist "%~dp05.2.0\mingw32-s\bin\qmake.exe" "%~dp0bin\QtCreator\qtbinpatcher.exe" --verbose --qt-dir="%~dp05.2.0\mingw32-s" --nobackup > NUL
if exist "%~dp0tools\QtCreator\bin\qmake.exe" "%~dp0bin\QtCreator\qtbinpatcher.exe" --verbose --qt-dir="%~dp0tools\QtCreator" --nobackup > NUL
start /b "" "%~dp0bin\qtCreator\bin\qtCreator.exe" -settingspath "%~dp0\bin\data"
NOTE:
After starting QtCreator, you need to go to "tools -> options -> Build and Run" to change the settings in order to reflect the tool chains location.OR
You could download my QtCreatorPortable.exe (https://drive.google.com/file/d/0B4DEiRGyVMoTT2VaLUFhTDJpVUU/edit?usp=sharing) and the initial settings data (https://drive.google.com/file/d/0B4DEiRGyVMoTQ0ktSkxFaTBUVU0/edit?usp=sharing) to ease the job. Unzip data.7z to z:\QtBuild\bin and save QtCreatorPortable.exe to z:\QtBuild. Just double the QtCreatorPortable.exe and it will use the qtbinpatcher.exe to patch the Qt libraries, update the settings and then start QtCreator. The assumption are as follow:
- Qt libraries are resided in .\5.2.0\mingw32 and/or .\5.2.0\mingw32-s
- QtCreator is resided in .\bin\QtCreator
- qtbinpatcher.exe is resided in .\bin\QtCreator
- QtCreator setting files in .\bin\data
ENJOY QT
References:
http://qt-project.org/wiki/MinGW-64-bithttp://qt-project.org/wiki/How-to-build-a-static-Qt-for-Windows-MinGW
Qt 5.2.0 released
The problem that I encountered so far is, I cannot compiled with icu. Linker complained that it cannot find the library.
However, when I checked with my settings, the location of the library has already been added to environment path and libs. Cannot find the cause (by the way I use the same script to compile 5.1.1 without such issue).
Cannot link with icu means no webkit. That's a shame.
By the way, I have managed to compile without icu and will release the package to my partner to test it. The package will be a portable tools set (thanks qtbinpatcher author to make it possible) with Qt 5.2.0 shared libraries (debug and release) and static (release only). This tools set can compile executable using dlls that can be run on Windows XP SP3.
As promise to +Alex Au, I will post the steps to compile Qt shortly.
seasons greetings
Can you see the embedded greetings?
Someone said that the message is
WE WISH YOU A MERRY CHRISTMAS
AND A HAPPY NEW YEAR
But I can only see the first message. How about you?
2013/11/22
#build #Qt5.1.1 with #mingw on #Windows finally suceeded
Three weeks struggling with the compilation of Qt5.1.1, I finally managed to have one built without failure message during compilation.
The main reason for previous failures, in my own opinion, is mainly due to my ignorance of one crusial factor during shadow build.
You should have your source and build folders in the same level, best in same folder.
This information has been mentioned in an old document about Qt shadow build instructions posted in nokia site before but seems cannot find it now. The current documents/wiki on qt-project site do not mention this explicitly but the example has such implied.
2013/11/14
[#solved] #Build #Qt5.1.1 #failed again (Makefile.Debug:7091: recipe for target '.obj/debug_shared/qwindowstheme.o' failed)
Need to try again.
#Build #Qt5.1.1 #failed again (Makefile.Debug:7091: recipe for target '.obj/debug_shared/qwindowstheme.o' failed)
After applying the patch, I have run into another problem "Makefile.Debug:7091: recipe for target '.obj/debug_shared/qwindowstheme.o' failed".
[#Solved] #Building #Qt5.1.1 static failed (Makefile:350: recipe for target 'qfilesystemengine_win.o' failed)
You can download the patch from here.
The file to be patched is <qt-5.1.1-Folder>/qtbase\src/corelib/io/qfilesystemengine_win.cpp
Hope this time the compile can get through.
2013/11/13
#GradeOne admission #IQ test
It is a grade one (primary one) admission IQ test. Adult should be able to answer within 30 sec.
I can answer it within 5. How about you?
2013/11/10
#GoogleCalendar not #sync with my #Galaxy #S3 #solution
Just successfully compile #QtRpt & #QtRptDesigner with #Qt5.1.1
2013/11/09
#compile #xTuple #OpenRpt with #Qt5 and #QtCreator
xTuple's OpenRpt is a features rich, open source report engine that worth a try.
When compiling with QtCreator with default options, I've got numerous errors saying ui*.h are missing. Check through the project folder, I can found the files but still cannot get through.
Since files in project path, this must be path searching issue that need to be solved.
2013/11/08
#g+ #hashtag testing
Android Blogger app cannot post published blog to g+
Why there will be two posts in G+ when I publish in blogger?
Anyone know why there will be two #g+ posts being generated whenever I post on #blogger? Though they are not exactly the same, but both link to the same post in my #blog.
Is there any setting control this behaviour?
Remove the yellow ! from the kits of QtCreator's build and run environment for Qt Static build
But if you really want to remove that yellow !, you can try to copy the Qt5Core.dll and Qt5Cored.dll from your shared build to the lib folder of your static build.
e.g.
c:\Qt\5.1.1\mingw48_32 (this is installation of the Qt SDK)Then you can
c:\Qt\5.1.1\mingw48_32s (the static version)
copy /y "c:\Qt\5.1.1\mingw48_32\lib\Qt5Core.dll" "c:\Qt\5.1.1\mingw48_32s\lib\Qt5Core.dll"Source: Qt5使用静态版,在配置Build&Run环境时,kits项中会出现黄色感叹号
copy /y "c:\Qt\5.1.1\mingw48_32\lib\Qt5Cored.dll" "c:\Qt\5.1.1\mingw48_32s\lib\Qt5Cored.dll"
G+ custom url
+ZacareshkBlogspotHkLive
2013/11/07
Building Qt5.1.1 static failed (Makefile:350: recipe for target 'qfilesystemengine_win.o' failed)
Building Qt5.1.1 failed again. Stopped during creating qmake.
Makefile:350: recipe for target 'qfilesystemengine_win.o' failed
Building qmake failed, return code 2
Building platform:
- Windows Server 2008 R2
- DirectX SDK 2010 June
- MinGW-builds (gcc-4.8.1-dwarf-rev5)
- ActivePerl-5.16.3.1603-MSWin32-x86-296746
- python-3.3.2
- ruby-1.9.3-p448
Building environment:
- DXSDK_DIR=Z:\QtBuild\tools\msdxsdk
- INCLUDE=.;Z:\QtBuild\tools\3rdparty\libicu\include;Z:\QtBuild\tools\3rdparty\openssl\include;Z:\QtBuild\tools\3rdparty\libmysql\include;\include;Z:\QtBuild\tools\msdxsdk\include
- LIB=.;Z:\QtBuild\tools\3rdparty\libicu\lib;Z:\QtBuild\tools\3rdparty\openssl\lib;Z:\QtBuild\tools\3rdparty\libmysql\lib;\lib;Z:\QtBuild\tools\msdxsdk\Lib\x86
- PATH=;Z:\QtBuild\5.1.1\src\qtbase\bin;Z:\QtBuild\5.1.1\src\qtrepotools\bin;Z:\QtBuild\tools\gnuwin32\bin;Z:\QtBuild\tools\mingw-builds\mingw32\bin;Z:\QtBuild\tools\perl\bin;Z:\QtBuild\tools\ruby\bin;Z:\QtBuild\tools\python\bin;Z:\QtBuild\tools\cmake\bin;Z:\QtBuild\tools\utils;Z:\QtBuild\tools\msdxsdk\Utilities\bin\x86;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem
- from
- QMAKE_LFLAGS =
- QMAKE_LFLAGS_DLL = -shared
- to
- QMAKE_LFLAGS = -static -static-libgcc
- QMAKE_LFLAGS_DLL = -static -static-libgcc
Configure option:
- cd /d Z:\QtBuild\5.1.1\src\
- Z:\QtBuild\5.1.1\src\configure.bat -confirm-license -opensource -platform win32-g++ -release -static -ltcg -prefix Z:\Qt\5.1.1\mingw481_32s -qt-sql-sqlite -qt-sql-odbc -plugin-sql-sqlite -plugin-sql-odbc -qt-zlib -qt-libpng -qt-libjpeg -opengl desktop -qt-freetype -no-angle -no-qml-debug -nomake tests -nomake examples -skip qtwebkit -icu -openssl-linked -qt-sql-mysql -plugin-sql-mysql -no-vcproj
2013/11/05
Qt configure failed
./configure.bat: line 1: @echo: command not found
./configure.bat: line 2: :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: command not found
./configure.bat: line 3: ::: command not found
./configure.bat: line 4: syntax error near unexpected token `('
./configure.bat: line 4: `:: Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).'
It's time to abolish mingw-builds and follow the official building procedures on Windows.

