Configuring Qbs Using Qbs

# Managing Qt Versions

## Introduction

To let Qbs know where the Qt build or Qt version is that you want to use, you must register it.

Register a Qt version like this:

    qbs setup-qt /usr/bin/qmake myqt

This will create the `myqt` profile which can then be used on the command line:

    qbs profile:myqt

Note: If the `setup-toolchains` command has found more than one toolchain, you will need to manually link your Qt profile to one of them, like this:

    qbs config profiles.myqt.baseProfile <profile name>

## Manual Setup

Everything that the setup-qt tool does can be done manually, as described in this section.

Here is an example for registering Qt, installed on Ubuntu GNU/Linux, again using a profile called `myqt`:

    qbs config profiles.myqt.Qt.core.binPath /usr/bin
    qbs config profiles.myqt.Qt.core.incPath /usr/include/qt4
    qbs config profiles.myqt.Qt.core.libPath /usr/lib/x86_64-linux-gnu
    qbs config profiles.myqt.Qt.core.mkspecPath /usr/share/qt4/mkspecs/linux-g++
    qbs config profiles.myqt.Qt.core.version 5.1.0

## Multiple Qt Builds

To support multiple Qt builds, or in fact any combination of related settings, you need to create several profiles. The following example illustrates how to set up three different profiles, each for a different Qt build:

    qbs setup-qt ~/dev/qt/4.7/bin/qmake qt47
    qbs setup-qt ~/dev/qt/4.8/bin/qmake qt48
    qbs setup-qt ~/dev/qt/5.0/qtbase/bin/qmake qt5

You can set the default Qt build like this:

    qbs config defaultProfile qt5

To choose a Qt build that is different from the default, use:

    qbs build profile:qt48

You can set other properties in a profile (not just Qt ones), in the same way you override them from the command line. For example:

    qbs setup-qt C:\Qt\5.0.0\qtbase\bin\qmake.exe qt5
    qbs config profiles.qt5.qbs.architecture x86_64
    qbs config profiles.qt5.baseProfile msvc2010

The last example uses the inheritance feature of profiles. All settings in the profile set as `baseProfile` are known in the derived profile as well. They can of course be overridden there.

## Customized Qt Settings

If you have built your Qt with the option `-qtnamespace MyNamespace` then you must set the following `config` value:

    qbs config profiles.myqt.Qt.core.namespace MyNamespace

The same goes for the -qtlibinfix option.

    qbs config profiles.myqt.Qt.core.libInfix MyInfix

Configuring Qbs Using Qbs