Difference between revisions of "Programming Reference:Building Qt for BCI2000"

From BCI2000 Wiki
Jump to: navigation, search
(Prepare Qt include files for external use)
(Build and copy MSVC libraries and auxiliary files)
Line 32: Line 32:
 
*Inside the <tt>qt-x.y.z</tt> directory, create a subdirectory <tt>win32-msvc2008</tt>.
 
*Inside the <tt>qt-x.y.z</tt> directory, create a subdirectory <tt>win32-msvc2008</tt>.
 
*Copy the following files from <tt>qt/bin</tt> to <tt>qt-x.y.z/win32-msvc2008/bin</tt>:
 
*Copy the following files from <tt>qt/bin</tt> to <tt>qt-x.y.z/win32-msvc2008/bin</tt>:
 +
idc.exe
 
  moc.exe
 
  moc.exe
 
  qmake.exe
 
  qmake.exe

Revision as of 15:01, 12 June 2013

This document describes how to build Qt for installation in the BCI2000 source tree. It is current as of Qt 4.8.4.

Note: Following this procedure is only required if you are a member of the BCI2000 team, and if your task is to update the Qt build coming with BCI2000. In case you just want to build BCI2000 against a version of Qt outside the source tree, run CMake a first time, then open the file BCI2000/build/CMakeCache.txt in the CMake GUI, or in a text editor, and set the value of the USE_EXTERNAL_QT option to "ON".

Build and copy MSVC libraries and auxiliary files

  • Download the Qt source code to your machine.
  • Outside the Qt source tree, create a directory qt-x.y.z, e.g. qt-4.7.0 for version 4.7.0.
  • Open the file qt/mkspecs/win32-msvc2008/qmake.conf in a text editor. In QMAKE_CFLAGS_RELEASE and QMAKE_CFLAGS_DEBUG, replace the -MD and -MDd with -MT and -MTd, respectively.
  • Open the VS2008 console window from the start menu, and from the Qt installation's qt directory, run configure with the following options:
-platform win32-msvc2008 
-static 
-no-sql-sqlite
-no-qt3support 
-fast 
-qt-zlib
-qt-libpng 
-qt-libmng 
-no-libtiff 
-no-libjpeg 
-no-phonon 
-no-webkit 
-no-scripttools 
-no-style-plastique 
-no-style-motif 
-no-style-cde 

As a full command line:

configure -platform win32-msvc2008 -static -no-sql-sqlite -no-qt3support -fast -qt-zlib -qt-libpng -qt-libmng -no-libtiff -no-libjpeg -no-phonon -no-webkit -no-scripttools -no-style-plastique -no-style-motif -no-style-cde 
  • When prompted for the type of license, choose "Open Source", and answer "yes" when asked whether you accept the terms of the license.
  • Run nmake as suggested by configure.
  • Inside the qt-x.y.z directory, create a subdirectory win32-msvc2008.
  • Copy the following files from qt/bin to qt-x.y.z/win32-msvc2008/bin:
idc.exe
moc.exe
qmake.exe
rcc.exe
uic.exe

Make sure to leave the qt.conf file unaffected.

  • From qt/lib, copy the following files to qt-x.y.z/win32-msvc2008/lib:
QtCore.lib
QtCored.lib
QtGui.lib
QtGuid.lib
QtOpenGL.lib
QtOpenGLd.lib
  • From qt/mkspecs, copy the file qconfig.pri, and recursively copy the contents of the features and the win32-msvc2008 directories to qt-x.y.z/win32-msvc2008/mkspecs.
  • Repeat the entire process with MSVC2010, with results going into a win32-msvc2010 directory rather than the win32-msvc2008 directory.
  • For 64-bit versions of the libraries, proceed as above, but run configure and nmake steps from a 64-bit Visual Studio command line prompt. The target directory should be named win32-amd64-msvc2008 for MSVC 2008 64-bit builds.

Build and copy mingw libraries and auxiliary files

  • From the Qt installation's qt directory, run configure with the following options:
-platform win32-g++
-static 
-no-sql-sqlite
-no-qt3support 
-fast 
-qt-zlib
-qt-libpng 
-qt-libmng 
-no-libtiff 
-no-libjpeg 
-no-phonon 
-no-webkit 
-no-scripttools 
-no-style-plastique 
-no-style-motif 
-no-style-cde 

The full command line is:

configure -platform win32-g++ -static -no-sql-sqlite -no-qt3support -fast -qt-zlib-qt-libpng -qt-libmng -no-libtiff -no-libjpeg -no-phonon -no-webkit -no-scripttools -no-style-plastique -no-style-motif -no-style-cde
  • When prompted for the type of license, choose "Open Source", and answer "yes" when asked whether you accept the terms of the license.
  • If you have previously done a full build, open a console window, and run mingw32-make in the following directories:
    • qt/src/corelib,
    • qt/src/gui,
    • qt/src/opengl.
  • Otherwise, run mingw32-make from the qt/src directory.
  • When the build is finished, copy the following files from qt/bin to qt-x.y.z/win32-g++/bin:
moc.exe
qmake.exe
rcc.exe
uic.exe
libgcc_s_dw2-1.dll
mingwm10.dll

If the DLL files do not exist, they are not required. Leave the qt.conf file in place, don't modify it.

  • From qt/lib, copy the following files to qt-x.y.z/win32-g++/lib:
libQtCore.a
libQtGui.a
libQtOpenGL.a
  • From qt/mkspecs, copy the file qconfig.pri, and recursively copy the contents of directories features, common, and win32-g++ to qt-x.y.z/win32-g++/mkspecs.

Prepare Qt include files for external use

  • Most header files point to header files in the qt/src header files. We don't want to provide the entire qt/src directory, so we need to replace these header files with the content of the files they point to. There is a fixheader tool provided in the BCI2000 source tree at build/buildutils/fixheader.cpp. Under cygwin, execute
make fixheader

from that directory to build the executable. Then, cd to the qt/include/Qt directory of your Qt installation, and execute

for i in `find *.h`; do /full/path/to/fixheader $i; done

Repeat this step for the QtCore, QtGui, and QtOpenGL include directories.

  • Copy the contents of the directory qt/include/Qt into qt-x.y.z/include/Qt, omitting the private directory.
  • Likewise, copy the QtCore, QtGui, QtOpenGL include directories to qt-x.y.z/include, omitting the respective private directories.

Upload Qt to the BCI2000 server

  • Create a self-extracting 7z archive from each subfolder of the qt-x.y.z directory. In order to expand correctly, the archive must contain the qt-x.y.z directory as well. For CMake to find an archive on the server, it must be located at the following http path: /externals/qt/qt-x.y.z.subdirname

Note that archives may not have an .exe file extension on the server. It will be added when the file is downloaded by CMake (see BCI2000/build/cmake/FindQt.cmake for details).

See also

Programming Reference:Build System