Programming Reference:Building Qt for BCI2000 (obsolete)
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.