[Development] Notes on "Qt Build Systems" @ QtCon 2016

BogDan Vatra bogdan at kdab.com
Wed Sep 7 09:19:29 CEST 2016


On marți, 6 septembrie 2016 17:35:03 EEST Cristian Adam wrote:
> On Tue, Sep 6, 2016 at 5:14 PM, Kevin Kofler <kevin.kofler at chello.at> wrote:
> > I guess somebody could even get CMake to write Qbs files, it would just be
> > one more generator. :-)
> 
> This was done already
> <https://gitlab.kitware.com/cmake/cmake/commit/f85db2f32358e6de921aba7d1cb8e
> cb81da934c0>, but it was removed from CMake due to bad feedback from
> Qt Creator people.
> 

Ha ha ha! 
The guy who implemented this didn't know that QBS is not better than cmake 
when it comes to give proper information to IDE which is so needed to have 
proper syntax highlighting and code completion. For those who don't know yet, 
QBS *DOESN'T* provide the necessary info to the IDE:
- no compiler preprocessor defines: https://bugreports.qt.io/browse/QBS-903 
even is hallucinating this bug was closed as invalid :) there is a pending 
patch https://codereview.qt-project.org/#/c/122000/ which might fix it but 
we'll soon celebrate its 2nd anniversary in gerrit :)
- no system includes paths: https://bugreports.qt.io/browse/QBS-904 
- no c/cpp flags: https://bugreports.qt.io/browse/QBS-905

Having said that, why on earth to create such a generator when QBS support in 
QtCreator is the same (or even worst) than cmake's one?


DISCLAIMER: I was one of the biggest fans of this project, I had so much hopes 
for it, but when you have high hopes you'll also have high disappoints :) .
I'll try to summarize my thought on QBS:
- it still has HUGE potential, it has a great easy to use & learn syntax 

-it has great features that you can't find in other build systems (e.g. it can 
build multiple ABIs/platforms at once).

- personally I don't mind that it depends on Qt, what I do mind is that it 
depends on dead Qt modules (e.g. QtScript, it has it's own (outdated?) QML 
parser fork). Other cool build systems (e.g. gradle) download half of the 
internet before they start, so, a build system that depends on a library like 
Qt is not that bad. As I said it has huge potential and in the future Qt will 
help to implement cool features like: automatically download/clone/checkout 
3rd partly libs, etc.

- QBS was introduced to us as a build system designed with tooling in mind, 
sadly that crucial aspect was forgotten (the above bugs prove what I'm 
saying).

- QBS developers don't use it in large projects with lots of dependencies, 
with situations when you need to build & run tools to generate code, when you 
need to build and/or run tools to check dependencies, when you need to test 
compiler flags, etc. (apart from QtCreator which has just a few dependencies). 
You might think that they started to use QBS to compile Qt to test all these 
things, well, think again, that work was started by a brave contributor 
(Andrew Knight) who is not a QBS developer! After the work was started, QBS 
developers jumped in.

- is QBS finished and ready to replace cmake/qmake/gradle/etc.? IMHO no! There 
are not too many remaining features to implement, but if the development 
continues at current speed I'm afraid we'll see people walking on Mars before 
we'll see QBS finished... I hope that trying to build Qt with QBS will motivate 
QBS developers to implement these features faster.


Cheers,
BogDan.




More information about the Development mailing list