---+!! Qt Framework %TOC% --- ---++ Description Qt is a cross-platform C++ framework for creating applications. Originally a GUI framework it also supports console only applications. Qt is developed by [[http://qt.nokia.com][Nokia]]. See also [[http://en.wikipedia.org/wiki/Qt_(framework)][Wikipedia]] on more details about Qt. Qt is used for some PC-based tools for Rockbox: * RockboxUtility * ThemeEditor ---++ Building Qt Unless you want to compile a statically linked application it's usually not necessary to compile Qt yourself. Nokia provides binary packages for Windows and OS X, and Linux distributions have packages as well. Compiling statically linked executable has advantages for deployment. Especially there is no need to distribute the DLLs for Qt anymore. For this reason we use a statically built Qt for building RockboxUtility and the ThemeEditor. To do so compiling Qt itself is necessary. ---+++ All Platforms Building Qt can take quite a while, especially since it does build a lot of examples and demos by default. To cut down the build time you can pass the initial =configure= call some options to disable various features. * =-nomake demos=: Disable demos (recommended) * =-nomake examples=: Disable examples (recommended) * =-nomake docs=: Disable documentation if you don't want to have it locally (or have another Qt installation on the machine already) * =-fast=: don't create Makefiles for demos and examples, useful if you don't build them (speeds up configure run) * =-no-webkit=: Disable Webkit. Webkit isn't currently needed by and of our applications and takes a long time to build. * =-release=: build release library only. If you don't plan debugging with the built library using this is a good idea. You *need* to pass the following option to configure: * =-static=: build static binary. This is *required*, otherwise you'll get a library for dynamic linking (and in that case you don't need to build yourself, see above). ---+++ Windows On Windows the [[http://www.mingw.org][MinGW]] toolchain is used to build both Qt and applications. Qt itself also supports Microsoft Visual Studio but this isn't supported with our applications. ---++++ Native Install [[http://www.mingw.org][MinGW]] using =mingw-get=. Configure and build Qt. We usually use the following for configuring Qt: =configure -no-exceptions -static -release -no-webkit -no-dbus -no-phonon -no-phonon-backend -no-qt3support -no-opengl -no-direct3d -no-style-motif -no-style-cde= ---++++ Cross compiling from Linux / OS X For cross compiling you can use the [[http://mingw-cross-env.nongnu.org/][MinGW cross compiling environment]] to set up everything. Install dependencies from the [[http://www.macports.org][MacPorts]] project (cmake, scons, xz). The =lrelease= binary isn't added add cross tool (which is unnecessary since it's platform independent). At least Rockbox Utility's project file tries to use that from the Qt installation. Therefore you need to create a symbolic link to the native =lrelease= in the mingw-cross-env installation folder below =usr/i686-pc-ming32/bin=. ---+++ Linux There's nothing special to care about. If you want to get rid of dependencies to other libraries like =libpng= make sure there are static libs in the compilers search path. ---+++ Mac OS X OS X uses Application Bundles which also include dynamic binaries. Therefore building Qt statically on OS X is unnecessary. Just use the binary packages provided by Nokia. Use the Carbon package to still include support for OS X 10.4. *Important:* When building Qt applications make sure to used the correct compiler as otherwise strange errors occur. OS X 10.6 defaults to =gcc-4.2= which doesn't support the OS X 10.4 SDK anymore. In order to be able to build Qt applications that still support OS X 10.4 you need to use =gcc-4.0= (part of XCode 3.2). To do so pass =qmake= the correct spec either by setting the environment variable =QMAKSPEC=macx-g++40= or via the command line option =-spec=, i.e. =qmake -spec macx-g++40=.
ore topic actions
r1 - 01 May 2011 - 17:52:12 -
Copyright © by the contributing authors.