[Qt5-feedback] Build system requirements for Qt5

Oswald Buddenhagen oswald.buddenhagen at nokia.com
Wed Jun 8 22:29:02 CEST 2011


On 06/08/11 20:39, ext Alexander Neundorf wrote:
> So what do you actually want from the buildsystem what cmake does not provide
> right now ?
>
hmm ...

- it needs to be *fast*

   - a null build should not take noticeably more time than stat()ing all
     files
   - as thiago noted, it needs to handle distributed building efficiently

     these two boil down to not being a meta build tool, but a native
     build tool. this is theoretically easily solvable, and the elusive
     cbuild is being talked about since half a decade, but was still not
     delivered.

     as far as i'm concerned, IDE integration should happen only via
     native support plugins for The build tool. not sure how realistic
     this is for the two relevant proprietary IDEs (VS and XCode).

   - changing a build rule somewhere deep down the tree absolutely must
     not trigger a re-configuration of the entire build tree.

   - caching of build configuration should come naturally, not as an
     afterthought (which many developers forget).

     these are inherent to the project structure and language.

- it needs a language which is not a royal pain in the arse to use for
   both humans and machines (IDEs)

   - it needs to be clean and well-specified

   - it needs to be declarative from the ground up:

     - the skeleton should be declarative. imperative constructs
       should be clearly encapsulated - not the other way round

     - it should be declaration order independent

     - it should be centered around build properties, not command lines.
       no CFLAGS, except as a total fallback. cmake is half way there.

       these are all prerequisites for a clean IDE integration, and for
       comprehensibility of complex build systems.

- it should cleanly support modularization. using another subproject's
   artifact should be the same as using a known framework or something
   "configure"d. subprojects should be cleanly detachable from the
   superproject.

- it needs to feed an IDE with a useful understanding of the project
   structure (not some random foo.o targets whose existence the IDE must
   divine out of thin air)

- it should take the concept of qmake's debug_and_release to the
   extreme (and do it right) - make multiple shadow builds for different
   platforms and build configurations at the same time

these are just a few i can think of right now. while some just a matter 
of throwing some $$$ onto them, for others i must ask you whether you 
honestly think cmake could ever deliver them without compromising 
functionality and/or fragmenting the existing cmake ecosystem (*)?

regards

(*) bingo! :D


More information about the Qt5-feedback mailing list