[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