[Development] Qt 6 buildsystem support requirements

Jason Newton nevion at gmail.com
Thu Aug 2 08:08:13 CEST 2018


Bazel's caching mechanism would also optimize away regeneration of
generated outputs (via genrules) across the different toolchains,
provided the tools/scripts and important environmental variables/files
do not change (which would hash to different keys).  Further you could
run a disk local cache or a network one - the network one letting say
spun up VMs to take advantage of out of VM results, or windows/macos.
https://docs.bazel.build/versions/master/remote-caching.html, or
CI/build servers turn around builds very quickly.  Deals with branch
changes and build config changes directly.  As far as I know the disk
local is concurrent build safe, while the http one is obviously safe -
though usually bazel will utilize your machine (doing useful work, not
something like java garbage collections) such that only one bazel
build at a time makes sense for, but you can do multiple too.  I'm not
aware of a better solution to cached build products than bazel's.

While there is a pathway for generating visual studio project files,
you can also use cl.exe (with or without MSVC installed), the state of
direct cl.exe support for most build systems hasn't always been
great... Also since it is on intelij products, that covers the
official android sdk since it uses IDEA for a few years now, though in
this case it understands the build system directly rather than
intermediate project files.  Support of android is first class:
https://docs.bazel.build/versions/master/be/android.html and support
for to maven et al package services for jar files.

On downloaded assets, the builtin downloader is parallel and generally
smarter than single tasking wget, as such it tends to outperform
cmake's downloading mechanisms (I believe these are only done
serially?) by quite a bit for pulling down online resources of any
type, provided your project explicitly used that capability.

>> -Analysis tools for the dependencies, like graphviz, but also memory
>> usage and timing info.  A legitimate profiler, have a look:
>> https://docs.bazel.build/versions/master/skylark/performance.html
>> https://www.kchodorow.com/blog/2015/09/18/build-y-u-go-slow/
>> (admittedly few online examples of this output and this is looks
>> different now IIRC)
>> -Does a good job of controlling verbosity while keeping the user
>> informed on the running targets being processed concurrently while
>> giving a quick way to hop out, go serial or show commands executed
>> -Workable, like cmake workable, visual studio generator, and xcode outputs.
>> -clion has a plugin good direct plugin for it, though more will follow
>> and they tried to make it easy for IDEs to incorporate (
>> https://blog.bazel.build/2016/06/10/ide-support.html we can agree it'd
>> be create if more build systems did this, right?
>> https://docs.bazel.build/versions/master/ide.html for fuller list )

>Pretty much all of which you *also* have with CMake/ninja...

That's why I listed this section, though the analysis tools are far
better on bazel's outputs than cmakes's you get actual profiler
analysis on the build process with bazel, not just a DAG.  Not many
build systems have pathways on visual studio or xcode, in particular
besides cmake.  Bazel is afaik the only build system that tried to
make it easy to integrate it into an IDE interactively, short of
perhaps qbs (qmake...?).

-Jason
On Wed, Aug 1, 2018 at 3:31 PM Thiago Macieira
<thiago.macieira at intel.com> wrote:
>
> On Wednesday, 1 August 2018 12:46:04 PDT BogDan Vatra via Development wrote:
> > Hi,
> >
> > qmake can't compile them all *at once* e.g. $ qmake && make will compile
> > only one target at the time not all.
> >
> > AFAIK QBS and iirc gn too, are the only few that have this cool feature.
>
> Now that is nice, as we know that the moc, uic, rcc outputs are platform-
> independent. That should help reduce the build times on Windows for debug-and-
> release builds, as running moc is a significant portion of the build time.
>
> --
> Thiago Macieira - thiago.macieira (AT) intel.com
>   Software Architect - Intel Open Source Technology Center
>
>
>
> _______________________________________________
> Development mailing list
> Development at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/development



More information about the Development mailing list