Qbs 1.13 released
April 18, 2019 by Christian Kandeler | Comments
We are happy to announce version 1.13.0 of the Qbs build tool. This is the last version to be released under the auspices of the Qt Company, but certainly not the least.
Highlights
Transparent pkg-config support
Qbs projects can now make use of pkg-config modules. Syntax-wise, the same dependency mechanism as for Qbs' own modules is used. For instance, on a typical Linux machine with an OpenSSL development package installed, the following is enough to let a Qbs project build against it:
Depends { name: "openssl" }
Internally, this functionality is implemented on top of module providers, a powerful new feature that allows creating Qbs modules on demand.
Automatic Qt detection
Projects with a Qt dependency now set up the required Qt-specific modules (such as Qt.core
) automatically at build time, using either the PATH
environment variable or the moduleProviders.Qt.qmakeFilePaths
property. It is therefore no longer strictly necessary to create a profile using the setup-qt
command. Behind the scenes, this feature is also implemented using module providers.
Job Pools
The global limit for the number of concurrently running jobs does not make sense for all types of commands. For instance, linkers are typically I/O-bound and take up a lot of memory, so it often makes sense not to parallelize them as much as compilers. Here's how job-specific limits are set on the command line:
$ qbs --job-limits linker:2,compiler:8
These limits can also be provided via preferences and in project files. The details are explained here.
What else is new?
Language Improvements
Rules are no longer required to specify output artifacts. As a result, rules whose main purpose is in their "side effect" will look more natural now, as they don't need to declare a dummy output file anymore.
It is no longer necessary to start each project file with an "import qbs" line.
The Application
, DynamicLibrary
and StaticLibrary
items have new properties install and installDir for more convenient installation of target binaries.
We introduced Process.atEnd() and FileInfo.canonicalPath().
C/C++ Support
GNU linker scripts are now scanned recursively to catch changes to included linker scripts. Thanks to Ola Røer Thorsen for this contribution!
The new cpp.linkerVariant property allows to force the use of ld.gold
, ld.bfd
or lld
for linking.
Qt Support
We introduced the new property Qt.core.enableBigResources for the creation of "big" Qt resources.
Static builds now pull in the default set of plugins as specified by Qt, and the user can specify the set of plugins by type.
Android Support
The AndroidApk
item has been deprecated. Instead, a normal Application
item can and should be used now.
Building Qt apps is properly supported now. Some small changes to Qt's androiddeployqt
tool were necessary to achieve this, so you need at least Qt 5.12.
Autotest Support
There is an autotest module now, which you can use to specify arguments and working directory per test.
Various things
We introduced the texttemplate module, a facility similar to qmake's QMAKE_SUBSTITUTES
feature.
We added basic support for Google Protocol Buffers (for C++ and Objective-C). Thanks to Ivan Komissarov for this contribution!
Try It!
The Open Source version is available on the download page, and you can find commercially licensed packages on the Qt Account Portal. Please post issues in our bug tracker. You can also find us on IRC in #qbs on chat.freenode.net, and on the mailing list. The documentation and wiki are also good places to get started.
Qbs is also available on a number of packaging systems (Chocolatey, MacPorts, Homebrew) and updated on each release by the Qbs development team. It can also be installed through the native package management system on a number of Linux distributions including but not limited to Debian, Ubuntu, Fedora, and Arch Linux.
Qbs 1.13.0 is also included in Qt Creator 4.9.0, which was released earlier this week.
So, what now?
Preparations for handing over the project to the community are ongoing. Stay tuned for further announcements.
Blog Topics:
Comments
Subscribe to our newsletter
Subscribe Newsletter
Try Qt 6.6 Now!
Download the latest release here: www.qt.io/download.
Qt 6.6. is a feature release with focus on improving UX capabilities including responsive UI technology and the Qt Graph module.
We're Hiring
Check out all our open positions here and follow us on Instagram to see what it's like to be #QtPeople.