Jump to content

Programming Reference:Building Qt for BCI2000 (obsolete)

From BCI2000 Wiki

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 

For convenience, the same options on a single line:

-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:
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 BCI2000/src/extlib/qt/msvc/lib:
QtCore.lib
QtCored.lib
QtGui.lib
QtGuid.lib
QtOpenGL.lib
QtOpenGLd.lib
QtScript.lib
QtScriptd.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.


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-gif 
-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.
  • Open a console window, and run mingw32-make in the following directories:
    • qt/src/corelib,
    • qt/src/gui,
    • qt/src/winmain,
    • qt/src/opengl,
    • qt/src/script.
  • When the build is finished, copy the following files from qt/bin to BCI2000/src/extlib/qt/mingw/bin:
findtr
idc.exe
moc.exe
qmake.exe
rcc.exe
syncqt
uic.exe
libgcc_s_dw2-1.dll
mingwm10.dll

Leave the qt.conf file in place, don't modify it.

  • From qt/lib, copy the following files to BCI2000/src/extlib/qt/mingw/lib:
libQtCore.a
libQtGui.a
libqtmain.a
libQtOpenGL.a
libQtScript.a
  • From qt/mkspecs, copy the file qconfig.pri, and recursively copy the contents of directories features, common, and win32-g++ to BCI2000/src/extlib/qt/mingw/mkspecs.

Copy Qt include files to the BCI2000 directory

  • 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, QtOpenGL, and QtScript include directories.

  • Copy the contents of the directory qt/include/Qt into BCI2000/src/extlib/qt/include/Qt, omitting the private directory.
  • Likewise, copy the QtCore, QtGui, QtOpenGL, QtScript include directories to BCI2000/src/extlib/qt/include, omitting the respective private directories.

See also

Programming Reference:Build System