[Development] Qmake Ninja generator

Adam Strzelecki ono at java.pl
Fri May 30 23:59:06 CEST 2014

> Qbs has by definition more features than cmake because it is a make tool.

I understand Qbs may have greater potential by design, but it has far less features than CMake today. I refer features as ability to detect various components, such as CUDA, OpenGL and support many platforms. However I don't claim Cmake is perfect, i.e. it has ugly confusing syntax (yet it is just a matter of getting used to that).

So far I managed to build & run Qbs on my Mac. However I can't see any advantage over Qmake (yet?), of course from my standpoint as potential Qbs user. It takes few seconds to start qbs qt-creator rebuild (reading BG from disk), where it is almost instant for LLVM/Clang ninja build.

Moreover it takes more to build qt-creator with Qbs (20min) than Qmake+make (18min). Also it doesn't support precompiled headers, at least not for qt-creator, where Qmake+make+PCH goes down to 9min.

> Neither cmake nor qmake build anything, they just generate makefiles or project files. In that respect qmake and cmake are quite alike. Qbs is a full-featured build tool: it takes care of generating the DAG *and* executing it. It’s like qmake and ninja in one.

Qbs doing both configure & build isn't really advantage to me. Once Qbs have similar feature coverage as CMake and (re)builds faster than ninja, or maybe generates less bloated ninja/Makefile/Xcode projects, supports some caching, or distributed build and finally has decent documentation, then it may be considered as new promising alternative.

Opposite, I take as advantage ninja being little independent build only tool, because anyone can decide how to generate build files for Ninja.

> In the long run I think Qt either need Qbs as the default build system, or ninja support in qmake.


> Ninja makes all the difference when building llvm. On a modern system I can get null llvm rebuild times on the order of 100ms with ninja, and under a second with a single changed .cpp file - and that’s a big project. The 1 second single-file rebuilds on fairly small make-based projects (like examples bundled with Qt) are really bad. With cmake+ninja, a single changed .cpp rebuild of a small Qt example on OS X takes about 250ms.

Yes, this was whole point starting this thread. Working on big project with ninja is awesome if you rebuild and run many times.

Also I wish to express my thanks to Qt developers for great CMake+ninja support in Qt Creator, as IMHO Qt Creator is best C++ editor (IDE) around the globe. Working with such huge codebase like LLVM/Clang is a pleasure in QtC.


More information about the Development mailing list