Difference between revisions of "Obtaining GPL'ed Qt for Windows"

From KitwarePublic
Jump to navigationJump to search
(Corrrecting and clarifying the red deprecating line at the top.)
 
(27 intermediate revisions by 6 users not shown)
Line 1: Line 1:
----
<font color="red">OBSOLETE: Starting with this modified version of Qt 4.3 is no longer required. The GPL source provided by Trolltech can be compiled using Visual Studio on Windows.  We are leaving this deprecated page here for historical reasons.</font>
----
== Overview ==
== Overview ==


On Win32 operating systems, [http://www.trolltech.com Trolltech] has adopted a policy of crippling their GPL'd "open source edition" of Qt 4.1 so that it can only be built using the [http://www.mingw.org MinGW] environment, which is based upon the gcc compiler ported to Win32.  Developers who wish to use Qt with Microsoft compilers would normally be encouraged to purchase the commercial edition of Qt, see the Trolltech [http://www.trolltech.com/developer/knowledgebase/389 FAQ entry] on this subject.  Because Microsoft compilers are preferred for ParaQ builds on Win32, we are providing a patched version of the Qt GPL sources that can be built with Microsoft tools.
On Win32 operating systems, [http://www.trolltech.com Trolltech] has adopted a policy of crippling their GPL'd "open source edition" of Qt 4.2 so that it can only be built using the [http://www.mingw.org MinGW] environment, which is based upon the gcc compiler ported to Win32.  Developers who wish to use Qt with Microsoft compilers would normally be encouraged to purchase the commercial edition of Qt, see the Trolltech [http://www.trolltech.com/developer/knowledgebase/389 FAQ entry] on this subject.  For convenience to those who wish to use Microsoft compilers, we are providing a patched version of the Qt GPL sources that can be built with Microsoft tools.


== Installation ==
== Installation ==


* Download [http://paraview.org/files/v2.9/ParaView-qt-win-opensource-src-4.1.4.zip], saving it to a convenient location (c:\qt is strongly recommended).
* Download [http://paraview.org/files/v3.1/paraview-qt-win-opensource-src-4.2.3.zip paraview-qt-win-opensource-src-4.2.3.zip], saving it to a convenient location (c:\qt is strongly recommended).
* Expand the ParaQ-qt-win-opensource-src-4.1.4.zip file.
* Expand the paraview-qt-win-opensource-src-4.2.3.zip file.
* Start a DOS shell, and cd to the c:\qt\paraq-qt-win-opensource-src-4.1.4 directory.
* Start a DOS shell, and cd to the c:\qt\paraview-qt-win-opensource-src-4.2.3 directory.
** The DOS shell should have your desired compiler environment
** For example, "Start->Programs->Microsoft Visual Studio 2005->Visual Studio Tools->Visual Studio 2005 Command Prompt"
* Run the Qt configure '''script''' ('''not''' configure.exe):
* Run the Qt configure '''script''' ('''not''' configure.exe):


  c:\qt\paraq-qt-win-opensource-src-4.1.4> qconfigure.bat
  c:\qt\paraview-qt-win-opensource-src-4.2.3> qconfigure.bat


* From this point forward, compilation and deployment of the Qt libraries should proceed normally.  Begin compilation using the in-console instructions provided by the configuration process.
* From this point forward, compilation and deployment of the Qt libraries should proceed normally.  Begin compilation using the in-console instructions provided by the configuration process.
* Configure your PATH to point to c:\qt\paraq-qt-win-opensource-src-4.1.4\bin.
* If you are using the Microsoft Visual Studio 2005 compiler with service pack 1 and get compile errors like the ones shown below, you have two options (listed after the errors).
* Use CMake to build ParaQ normally.


== Advanced Users ==
Microsoft (R) Program Maintenance Utility Version 8.00.50727.762
Copyright (C) Microsoft Corporation.  All rights reserved.
cl -c -Yc -Fptmp\qmake_pch.pch -Fotmp\qmake_pch.obj -nologo
-Zm200 -GS -O1 -MD -DNDEBUG -GR -EHsc -W3 -DUNICODE -DQT_LARGEFILE_SUPPORT -DWIN32
-D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -DQT_BUILD_QMAKE
-DQT_BOOTSTRAPPED -DQT_NO_TEXTCODEC -DQT_NO_LIBRARY -DQT_NO_STL -DQT_NO_COMPRESS
-DQT_NO_UNICODETABLES -DQT_NO_GEOM_VARIANT -DQT_NO_DATASTREAM -DQMAKE_OPENSOURCE_EDITION
-DQT_NODLL -DQT_NO_THREAD -DQT_NO_QOBJECT -I"../src/corelib/arch/generic"
-I"generators" -I"generators\unix" -I"generators\win32" -I"generators\mac"
-I"../include" -I"../include/QtCore" -I"../src/3rdparty/md5" -I"../qmake"
-I"..\mkspecs\win32-msvc2005" -TP qmake_pch.h
qmake_pch.h
c:\qt\qt-win-opensource-src-4.2.3\include\qtcore\../../src/corelib/tools/qhash.h
(866) : error C2244: 'QMultiHash<Key,T>::replace' : unable to match
function definition to an existing declaration
c:\qt\qt-win-opensource-src-4.2.3\include\qtcore\../../src/corelib/tools/qhash.h(851) : see declaration of 'QMultiHash<Key,T>::replace'
        definition
        'QHash<Key,T>::iterator QMultiHash<Key,T>::replace(const Key&,const T &)'
        existing declarations
        'QHash<Key,T>::iterator QMultiHash<Key,T>::replace(const Key&,const T &)'
c:\qt\qt-win-opensource-src-4.2.3\include\qtcore\../../src/corelib/tools/qhash.h
(870) : error C2244: 'QMultiHash<Key,T>::insert' : unable to match
function definition to an existing declaration
c:\qt\qt-win-opensource-src-4.2.3\include\qtcore\../../src/corelib/tools/qhash.h(852) : see declaration of 'QMultiHash<Key,T>::insert'
        definition
        'QHash<Key,T>::iterator QMultiHash<Key,T>::insert(const Key&,const T &)'
        existing declarations
        'QHash<Key,T>::iterator QMultiHash<Key,T>::insert(const Key&,const T &)'
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 8\VC\BIN\cl.EXE"' : return code '0x2'
Stop.
 
You can either get hotfix KB930198 from Microsoft, or you can make the following changes to two files in your Qt source code.
 
in qhash.h:
 
// Fix for VS 2005 SP1
  typedef QHash<Key, T>::iterator iterator;
  inline typename iterator replace(const Key &key, const T &value);
  inline typename iterator insert(const Key &key, const T &value);
//    inline typename QHash<Key, T>::iterator replace(const Key &key, const T &value);
//    inline typename QHash<Key, T>::iterator insert(const Key &key, const T &value);


For the curious, here is the procedure used to patch the Qt GPL sources:


The [http://sourceforge.net/projects/qtwin/ QtWin Project] provides a set of patches that allow the Qt GPL libraries to be built with Microsoft compilers. You will need [http://sourceware.org/cygwin Cygwin] installed on your machine to provide the "patch" command.
In qmap.h:
// Fix for VS 2005 SP1
  typedef QMap<Key, T>::iterator iterator;
  inline typename iterator replace(const Key &key, const T &value);
  inline typename iterator insert(const Key &key, const T &value);
//   inline typename QMap<Key, T>::iterator replace(const Key &key, const T &value);
  //   inline typename QMap<Key, T>::iterator insert(const Key &key, const T &value);


* If you don't already have Cygwin installed (why not?), run [http://sourceware.org/cygwin/setup.exe Cygwin Setup] to download and install Cygwin.
* Configure your PATH to point to c:\qt\paraview-qt-win-opensource-src-4.2.3\bin.
* Download [http://www.trolltech.com/download.html?target=ftp://ftp.trolltech.com/qt/source/qt-win-opensource-src-4.1.4.zip qt-win-opensource-src-4.1.4.zip] from Trolltech.
* Use CMake to build ParaView normally.
* Expand qt-win-opensource-src-4.1.4.zip in a convenient location such as c:\qt.  This will create a c:\qt\qt-win-opensource-src-4.1.4 directory containing the full Qt sources.
* Download [http://prdownloads.sourceforge.net/qtwin/acs4qt414p1.zip?download acs4qt414p1.zip] from the [http://sourceforge.net/projects/qtwin QtWin] project.
* Move the downloaded file acs4qt414p1.zip to the c:\qt\qt-win-opensource-src-4.1.4 directory.
* Expand acs4qt414p1.zip in place.
* Start a Cygwin shell, and cd to your new Qt source directory:


$ cd /cygdrive/c/qt/qt-win-opensource-src-4.1.4
== Advanced Users ==


* Patch the Qt sources:
For the curious, here is the procedure used to patch the Qt GPL sources:


$ patch -p0 -i msvc_bcc32_414.patch
The [http://sourceforge.net/projects/qtwin/ QtWin Project] provides a set of patches that allow the Qt GPL libraries to be built with Microsoft compilers.


* Download [http://www.trolltech.com/download.html?target=ftp://ftp.trolltech.com/qt/source/qt-win-opensource-src-4.2.3.zip qt-win-opensource-src-4.2.3.zip] from Trolltech.
* Expand qt-win-opensource-src-4.2.3.zip in a convenient location such as c:\qt.  This will create a c:\qt\qt-win-opensource-src-4.2.3 directory containing the full Qt sources.
* Download [http://downloads.sourceforge.net/qtwin/acs-4.2.3-patch1.zip acs-4.2.3-patch1.zip] from the [http://sourceforge.net/projects/qtwin QtWin] project.
* Move the downloaded file acs-4.2.3-patch1.zip to the c:\qt\qt-win-opensource-src-4.2.3 directory.
* Expand acs-4.2.3-patch1.zip in place.
* Run installpatch42.bat in the c:\qt\qt-win-opensource-src-4.2.3 directory.
* Voila!
* Voila!
'''''Note:''''' ensure that your archive utility restores permissions and ownership for the zip file contents.      Some tools (such as cygwin ''unzip'') don't do this by default, which will lead to compile errors when you compile the sources later-on.


== Older Versions ==
== Older Versions ==
 
* [http://paraview.org/files/v2.9/paraview-qt-win-opensource-src-4.2.2.zip http://paraview.org/files/v2.9/paraview-qt-win-opensource-src-4.2.2.zip]
* [[Image:Paraq-qt-win-opensource-src-4-1-0.zip]]
* [http://paraview.org/files/v2.9/ParaView-qt-win-opensource-src-4-1-0.zip http://paraview.org/files/v2.9/ParaView-qt-win-opensource-src-4-1-0.zip]
* [http://paraview.org/files/v2.9/ParaView-qt-win-opensource-src-4.1.4.zip http://paraview.org/files/v2.9/ParaView-qt-win-opensource-src-4.1.4.zip]

Latest revision as of 20:19, 18 February 2009


OBSOLETE: Starting with this modified version of Qt 4.3 is no longer required. The GPL source provided by Trolltech can be compiled using Visual Studio on Windows. We are leaving this deprecated page here for historical reasons.


Overview

On Win32 operating systems, Trolltech has adopted a policy of crippling their GPL'd "open source edition" of Qt 4.2 so that it can only be built using the MinGW environment, which is based upon the gcc compiler ported to Win32. Developers who wish to use Qt with Microsoft compilers would normally be encouraged to purchase the commercial edition of Qt, see the Trolltech FAQ entry on this subject. For convenience to those who wish to use Microsoft compilers, we are providing a patched version of the Qt GPL sources that can be built with Microsoft tools.

Installation

  • Download paraview-qt-win-opensource-src-4.2.3.zip, saving it to a convenient location (c:\qt is strongly recommended).
  • Expand the paraview-qt-win-opensource-src-4.2.3.zip file.
  • Start a DOS shell, and cd to the c:\qt\paraview-qt-win-opensource-src-4.2.3 directory.
    • The DOS shell should have your desired compiler environment
    • For example, "Start->Programs->Microsoft Visual Studio 2005->Visual Studio Tools->Visual Studio 2005 Command Prompt"
  • Run the Qt configure script (not configure.exe):
c:\qt\paraview-qt-win-opensource-src-4.2.3> qconfigure.bat
  • From this point forward, compilation and deployment of the Qt libraries should proceed normally. Begin compilation using the in-console instructions provided by the configuration process.
  • If you are using the Microsoft Visual Studio 2005 compiler with service pack 1 and get compile errors like the ones shown below, you have two options (listed after the errors).
Microsoft (R) Program Maintenance Utility Version 8.00.50727.762
Copyright (C) Microsoft Corporation.  All rights reserved.

cl -c -Yc -Fptmp\qmake_pch.pch -Fotmp\qmake_pch.obj -nologo
-Zm200 -GS -O1 -MD -DNDEBUG -GR -EHsc -W3 -DUNICODE -DQT_LARGEFILE_SUPPORT -DWIN32
-D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -DQT_BUILD_QMAKE
-DQT_BOOTSTRAPPED -DQT_NO_TEXTCODEC -DQT_NO_LIBRARY -DQT_NO_STL -DQT_NO_COMPRESS
-DQT_NO_UNICODETABLES -DQT_NO_GEOM_VARIANT -DQT_NO_DATASTREAM -DQMAKE_OPENSOURCE_EDITION
-DQT_NODLL -DQT_NO_THREAD -DQT_NO_QOBJECT -I"../src/corelib/arch/generic"
-I"generators" -I"generators\unix" -I"generators\win32" -I"generators\mac"
-I"../include" -I"../include/QtCore" -I"../src/3rdparty/md5" -I"../qmake"
-I"..\mkspecs\win32-msvc2005" -TP qmake_pch.h
qmake_pch.h
c:\qt\qt-win-opensource-src-4.2.3\include\qtcore\../../src/corelib/tools/qhash.h
(866) : error C2244: 'QMultiHash<Key,T>::replace' : unable to match
function definition to an existing declaration

c:\qt\qt-win-opensource-src-4.2.3\include\qtcore\../../src/corelib/tools/qhash.h(851) : see declaration of 'QMultiHash<Key,T>::replace'
        definition
        'QHash<Key,T>::iterator QMultiHash<Key,T>::replace(const Key&,const T &)'
        existing declarations
        'QHash<Key,T>::iterator QMultiHash<Key,T>::replace(const Key&,const T &)'
c:\qt\qt-win-opensource-src-4.2.3\include\qtcore\../../src/corelib/tools/qhash.h
(870) : error C2244: 'QMultiHash<Key,T>::insert' : unable to match
function definition to an existing declaration

c:\qt\qt-win-opensource-src-4.2.3\include\qtcore\../../src/corelib/tools/qhash.h(852) : see declaration of 'QMultiHash<Key,T>::insert'
        definition
        'QHash<Key,T>::iterator QMultiHash<Key,T>::insert(const Key&,const T &)'
        existing declarations
        'QHash<Key,T>::iterator QMultiHash<Key,T>::insert(const Key&,const T &)'
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 8\VC\BIN\cl.EXE"' : return code '0x2'
Stop.

You can either get hotfix KB930198 from Microsoft, or you can make the following changes to two files in your Qt source code.

in qhash.h:

// Fix for VS 2005 SP1
  typedef QHash<Key, T>::iterator iterator;
  inline typename iterator replace(const Key &key, const T &value);
  inline typename iterator insert(const Key &key, const T &value);
//    inline typename QHash<Key, T>::iterator replace(const Key &key, const T &value);
//    inline typename QHash<Key, T>::iterator insert(const Key &key, const T &value);


In qmap.h:

// Fix for VS 2005 SP1
  typedef QMap<Key, T>::iterator iterator;
  inline typename iterator replace(const Key &key, const T &value);
  inline typename iterator insert(const Key &key, const T &value);
//    inline typename QMap<Key, T>::iterator replace(const Key &key, const T &value);
//    inline typename QMap<Key, T>::iterator insert(const Key &key, const T &value);
  • Configure your PATH to point to c:\qt\paraview-qt-win-opensource-src-4.2.3\bin.
  • Use CMake to build ParaView normally.

Advanced Users

For the curious, here is the procedure used to patch the Qt GPL sources:

The QtWin Project provides a set of patches that allow the Qt GPL libraries to be built with Microsoft compilers.

  • Download qt-win-opensource-src-4.2.3.zip from Trolltech.
  • Expand qt-win-opensource-src-4.2.3.zip in a convenient location such as c:\qt. This will create a c:\qt\qt-win-opensource-src-4.2.3 directory containing the full Qt sources.
  • Download acs-4.2.3-patch1.zip from the QtWin project.
  • Move the downloaded file acs-4.2.3-patch1.zip to the c:\qt\qt-win-opensource-src-4.2.3 directory.
  • Expand acs-4.2.3-patch1.zip in place.
  • Run installpatch42.bat in the c:\qt\qt-win-opensource-src-4.2.3 directory.
  • Voila!

Note: ensure that your archive utility restores permissions and ownership for the zip file contents. Some tools (such as cygwin unzip) don't do this by default, which will lead to compile errors when you compile the sources later-on.

Older Versions