General

Building Qt

  1. Use the latest Qt version according to QtCreator README [qt.gitorious.org] using a build with prefix==$PWD (important due to private headers required by the QML visual designer).
  2. Configure flags (this refers to a Qt 4.x version):
    1. Linux: -release -no-scripttools -qt-zlib -qt-libtiff -qt-libpng -qt-libmng -qt-libjpeg -opensource -confirm-license -nomake examples -nomake demos -prefix $PWD -phonon -phonon-backend -gtkstyle -DENABLE_VIDEO=0 -no-icu
    2. Mac: -release -no-scripttools -qt-zlib -qt-libtiff -qt-libpng -qt-libmng -qt-libjpeg -opensource -confirm-license -nomake examples -nomake demos -prefix $PWD -sdk /Developer/SDKs/MacOSX10.6.sdk
    3. Windows: -platform win32-msvc2010 -release -no-scripttools -qt-zlib -qt-libtiff -qt-libpng -qt-libmng -qt-libjpeg -opensource -confirm-license -nomake examples -nomake demos -webkit -prefix

Notes:

  1. Make sure choose a long enough directory for Qt on Unix, otherwise chrpath will fail. Good example /home/build/qt-4.x.x-build-_________PADDING________.

Building Qt Creator

  1. It is recommended to build in a shadow build directory
  2. qmake $SOURCES/qtcreator.pro CONFIG+=release” “DEFINES+=IDE_REVISION=$GIT_COMMIT” “QTC_PREFIX=/qt-creator-x.y.z” where $GIT_COMMIT should be the sha1 of the commit that you build, and where the QTC_PREFIX is the directory prefix used for the 7zips that are created by the bindist target (see below).
  3. set the following environment variables:
    1. INSTALL_ROOT: changes the location for the install dir when doing make install, e.g. $BUILDDIR/install/qtcreator (not used on Mac)
    2. INSTALL_EDITION: can be set to e.g. -opensource, used for 7z and dmg file names, $${PLATFORM}$(INSTALL_EDITION)-$${QTCREATOR_VERSION}$(INSTALL_POSTFIX)
    3. INSTALL_POSTFIX: used for 7z and dmg file names, $${PLATFORM}$(INSTALL_EDITION)-$${QTCREATOR_VERSION}$(INSTALL_POSTFIX)
  4. make
  5. make docs
  6. make install (don’t use on Mac)
  7. make install_docs (don’t use on Mac)
  8. make deployqt

After these calls the INSTALL_ROOT (Windows/Linux) or $BUILDDIR/bin/Qt Creator.app (Mac) contains a distributable binary build.

To add “external” executables (jom, qtcreatorcdbext64) that we deploy for Windows builds to your install, call

  1. make deployartifacts

To create a 7zip with the binary build, call

  1. make bindist
    That packages the files with a directory starting with the QTC_PREFIX you set in the qmake call.

To create a 7zip that can be used for installers, that directly contains the files without additional directory prefix (i.e. directly bin/, lib/, and so on), call

  1. make bindist_installer

To create actual Qt Creator-only installers, you need to have the installer framework binaries installed, then

  1. set the following additional environment variable:
    1. IFW_PATH: location where make installer looks for the installer framework binaries (i.e. its bin/ and lib/ directories)
  2. make bindist_installer installer

To create a disk image (dmg) with the Qt Creator.app on Mac, call

  1. make dmg

Things affecting the build/install

Environment Variables

INSTALL_ROOT changes the location for the install dir when doing make install, e.g. $BUILDDIR/install/qtcreator (not used on Mac), installation is done into $(INSTALL_ROOT)$$QTC_PREFIX
INSTALL_EDITION can be set to e.g. -opensource, used for 7z and dmg file names, $${PLATFORM}$(INSTALL_EDITION)-$${QTCREATOR_VERSION}$(INSTALL_POSTFIX)
INSTALL_POSTFIX used for 7z and dmg file names, $${PLATFORM}$(INSTALL_EDITION)-$${QTCREATOR_VERSION}$(INSTALL_POSTFIX)
IFW_PATH location where make installer looks for the installer framework binaries (i.e. its bin/ and lib/ directories)
INSTALLER_ARCHIVE This overwrites the default value of the 7z filename which is used by the bindist_installer step.

Qmake Variables

QTC_PREFIX directory prefix for the install directory make install and for what is packaged with make bindist, must start with a /, e.g. /qt-creator-x.y.z, installation is done into $(INSTALL_ROOT)$$QTC_PREFIX
IDE_PACKAGE_MODE Disables building the HellWorld and UpdateInfo plugins (which are built but marked experimental otherwise)
UPDATEINFO_ENABLE Enables the UpdateInfo plugin and enables it for the build (usually it is marked as experimental)
QT_PRIVATE_HEADERS Set to QTDIR/include where private headers are installed, if your Qt version doesn’t have them in its standard include directory

C Defines

IDE_VERSION_DESCRIPTION Text description for the Qt Creator version, shown in parenthesis after the version number in the About dialog. For example used to show “Qt Creator 2.4.82 (2.5.0-beta)” (IDE_VERSION_DESCRIPTION=“2.5.0-beta” in that case)
IDE_REVISION String to show as revision in About dialog. Should be set to the git sha that the Qt Creator was built from.
IDE_SETTINGSVARIANT Changes the directory where Qt Creator looks for user settings and resources. E.g. ~/.config/IDE_SETTINGSVARIANT/qtcreator.ini on Linux. Defaults to “Nokia”.

Install Settings

Qt Creator reads the QtCreator.ini, qtversion.xml and toolchains.xml from its installation directory as “install settings”. (The directory is share/qtcreator/IDE_SETTINGSVARIANT/ on Windows and Linux, Qt Creator.app/Contents/Resources/IDE_SETTINGSVARIANT/ on Mac.)

The qt versions from the qtversion.xml and tool chains from toolchains.xml are added as “autodetected” to Qt Creator. The settings file (.ini) is used for QSettings::SystemScope. An installer can give any Qt Creator setting a default value by writing into this .ini file.

The following special settings (or specially notable settings) are also read by Qt Creator:

ExampleManifests Array of strings. Paths to manifest xml files that describe examples to show in Qt Creator’s example browser.
Plugins/Ignored QStringList (i.e. string containing of comma-separated values). Names of plugins that should not be loaded by default (even though they are installed and not marked experimental).
Plugins/ForceEnabled QStringList (i.e. string containing of comma-separated values). Names of plugins that should be loaded even though they would not be loaded by default (e.g. because they are marked as experimental).
Help/InstalledDocumentation QStringList (i.e. string containing of comma-separated values). Paths to qch (documentation) files and directories containing qch files that should be registered with Qt Creator

Todo

  • 64 bit binary libs for Creator on Windows
  • Qt.conf
  • Packaging into Installer Component
  • How to write to separate ini file.
  • Special qmake variables (updater, sdk)

{{DISPLAYTITLE:Building Qt Creator Packages}}

Categories: