Difference between revisions of "Slicer3:Developers:Projects:QtSlicer/Tutorials/CompileWithQt"

From Slicer Wiki
Jump to: navigation, search
Line 20: Line 20:
 
** build with <code>configure.exe -platform win32-msvc2008</code>  
 
** build with <code>configure.exe -platform win32-msvc2008</code>  
 
*** Note: if you are compiling Slicer in Debug mode, please add the -debug argument to the command line above to generate a compatible build; Release is the default.
 
*** Note: if you are compiling Slicer in Debug mode, please add the -debug argument to the command line above to generate a compatible build; Release is the default.
 +
**** Using the Qt Designer on Windows requires that the Slicer widget plugins are compiled in the same mode than Qt. If Qt is compiled in Release mode (default), Slicer would have to be compiled in Release. However if Qt is compiled in Debug mode only, Slicer must be compiled in Debug. (and if Qt is in "Release and Debug", Slicer must be compiled in Release). So for developers, the <b>Debug mode is recommended</b>.
 
***According to [http://qt.nokia.com/doc/4.6/supported-platforms.html] Qt does not support msvc2008 on windows xp.  However, running configure.exe with no -platform argument seems to work. If you run configure with the -platform argument first by mistake, if configure -clean doesn't work, you may need to start from a fresh extraction from the .zip archive before running configure again with no -platform, unless you can run nmake with the config clean target.
 
***According to [http://qt.nokia.com/doc/4.6/supported-platforms.html] Qt does not support msvc2008 on windows xp.  However, running configure.exe with no -platform argument seems to work. If you run configure with the -platform argument first by mistake, if configure -clean doesn't work, you may need to start from a fresh extraction from the .zip archive before running configure again with no -platform, unless you can run nmake with the config clean target.
 
** run <code>vcvars32.bat</code> first
 
** run <code>vcvars32.bat</code> first
Line 25: Line 26:
 
** building with webkit support requires that <i>src/3rdparty/webkit/WebCore/tmp/moc/{debug,release}_shared/mocinclude.tmp</i> be removed. else you will get linker errors like <code>QNetworkReplyHandler.obj : error LNK2001: unresolved external symbol "public: virtual struct QMetaObject const * __thiscall WebCore::FormDataIODevice::metaObject(void)const (?metaObject@FormDataIODevice@WebCore@@UBEPBUQMetaObject@@XZ)</code>
 
** building with webkit support requires that <i>src/3rdparty/webkit/WebCore/tmp/moc/{debug,release}_shared/mocinclude.tmp</i> be removed. else you will get linker errors like <code>QNetworkReplyHandler.obj : error LNK2001: unresolved external symbol "public: virtual struct QMetaObject const * __thiscall WebCore::FormDataIODevice::metaObject(void)const (?metaObject@FormDataIODevice@WebCore@@UBEPBUQMetaObject@@XZ)</code>
 
** If you encounter the following error <code>api\qscriptextensionplugin.h(43): Error: Undefined interface,</code>, delete the files <i>\src\script\tmp\moc\debug_shared\mocinclude.tmp</i> and <i>\src\script\tmp\moc\release_shared\mocinclude.tmp</i> and restart nmake. For more info, please see [http://bugreports.qt.nokia.com/browse/QTBUG-6470 QTBug 6470]].
 
** If you encounter the following error <code>api\qscriptextensionplugin.h(43): Error: Undefined interface,</code>, delete the files <i>\src\script\tmp\moc\debug_shared\mocinclude.tmp</i> and <i>\src\script\tmp\moc\release_shared\mocinclude.tmp</i> and restart nmake. For more info, please see [http://bugreports.qt.nokia.com/browse/QTBUG-6470 QTBug 6470]].
** Note: Using the Qt Designer on Windows requires that the Slicer widget plugins are compiled in the same mode than Qt. If Qt is compiled in Release mode (default), Slicer must be compiled in Release. If Qt is compiled in Debug mode only, Slicer must be compiled in Debug. (however if Qt is in Release and Debug, Slicer must be in Release).
+
** Note:
  
 
== 2 Build VTK with Qt enabled==
 
== 2 Build VTK with Qt enabled==

Revision as of 19:53, 6 January 2010

Home < Slicer3:Developers:Projects:QtSlicer < Tutorials < CompileWithQt

QtSlicer/Tutorials

Building Slicer with Qt

1 Build Qt

Download and install Qt. As of winter 2009, get the 4.6 version.

  • Linux/Mac - install full QtCreator package (use "-arch x86_64" for a 64 bit build on snowleopard)
cd Slicer3-lib
mkdir Qt
mkdir Qt-build
cd Qt
wget http://get.qt.nokia.com/qt/source/qt-everywhere-opensource-src-4.6.0.tar.gz
tar xvfz qt-everywhere-opensource-src-4.6.0.tar.gz
cd qt-everywhere-opensource-src-4.6.0
echo yes | ./configure -prefix ../../Qt-build -debug-and-release -opensource  -no-qt3support 
make -j 16
make install
  • Windows - need to get source code. On the LGPL tab, select the source code download page for windows and visual studio 2008, and note that there is a link below where you can download the source code in a zip archive (use a windows extracter, don't use cygwin unzip it).
    • launch the msvc2008 command prompt (MSVC08 Tools->Visual Studio 2008 CommandPrompt)
    • build with configure.exe -platform win32-msvc2008
      • Note: if you are compiling Slicer in Debug mode, please add the -debug argument to the command line above to generate a compatible build; Release is the default.
        • Using the Qt Designer on Windows requires that the Slicer widget plugins are compiled in the same mode than Qt. If Qt is compiled in Release mode (default), Slicer would have to be compiled in Release. However if Qt is compiled in Debug mode only, Slicer must be compiled in Debug. (and if Qt is in "Release and Debug", Slicer must be compiled in Release). So for developers, the Debug mode is recommended.
      • According to [1] Qt does not support msvc2008 on windows xp. However, running configure.exe with no -platform argument seems to work. If you run configure with the -platform argument first by mistake, if configure -clean doesn't work, you may need to start from a fresh extraction from the .zip archive before running configure again with no -platform, unless you can run nmake with the config clean target.
    • run vcvars32.bat first
    • and then nmake.
    • building with webkit support requires that src/3rdparty/webkit/WebCore/tmp/moc/{debug,release}_shared/mocinclude.tmp be removed. else you will get linker errors like QNetworkReplyHandler.obj : error LNK2001: unresolved external symbol "public: virtual struct QMetaObject const * __thiscall WebCore::FormDataIODevice::metaObject(void)const (?metaObject@FormDataIODevice@WebCore@@UBEPBUQMetaObject@@XZ)
    • If you encounter the following error api\qscriptextensionplugin.h(43): Error: Undefined interface,, delete the files \src\script\tmp\moc\debug_shared\mocinclude.tmp and \src\script\tmp\moc\release_shared\mocinclude.tmp and restart nmake. For more info, please see QTBug 6470].
    • Note:

2 Build VTK with Qt enabled

cd ../../VTK-build
../CMake-build/bin/ccmake .
Press 't' to enter advanced mode.
VTK_USE_GUISUPPORT to ON
Press 'c' to configure.
VTK_USE_QVTK to ON
Press 'c' to configure.
DESIRED_QT_VERSION to 4
Press 'c' to configure.
QT_QMAKE_EXECUTABLE to {path to}/Slicer3-lib/Qt-build/bin/qmake
Press 'c' to configure.
Press 'g' to generate
make -j16

3 Build Slicer with Qt enabled.

cd ../../Slicer3-build
../Slicer3-lib/CMake-build/bin/ccmake .
Slicer3_USE_QT ON
Press 'c' to configure
QT_QMAKE_EXECUTABLE to {path to}/Slicer3-lib/Qt-build/bin/qmake
Press 'c' to configure and then press 'g' to generate.
make -j16

Useful links for Qt