[Qt5-feedback] Build system requirements for Qt5

Alexander Neundorf neundorf at kde.org
Tue Jun 7 00:52:16 CEST 2011


On Saturday, June 04, 2011 06:12:57 PM Bill Hoffman wrote:
> On 6/4/2011 4:37 AM, Thiago Macieira wrote:
> > Em Friday, 3 de June de 2011, às 13:59:20, Charley Bay escreveu:
> >> Marcus spaketh:
> >>> I have been considering this for quite some time, and we have been
> >>> talking about this at Kitware. There is discussion of replacing Qt's
> >>> build system, possibly writing a new one or modifying an existing one.
> >>> What I would really like to know is what you want the declarative
> >>> language to look like. Is the general consensus a JSON structure?
> >>> Would looping and conditional constructs from JavaScript be used, or
> >>> purely the data container format?
> > 
> > The most important thing is that it be a declarative language, not
> > imperative. It needs to be something that the IDE can fully parse
> > without ambiguity and without hacks as "evaluate all branches of if-else
> > to true".
> > 
> > It should be clear which parts are related to the configuration-detection
> > part of the cycle and which ones list the build instructions. Like
> > autoconf and automake do: autoconf is imperative, automake is
> > declarative.
> 
> I would like to dig into the specifics a bit on the declarative vs
> imperative and what it would actually look like.
> 
> How would you handle the imperative system introspection's interaction
> with the declarative part.  Perhaps if you could give a simple example
> of how one would handle an optionally compiled file in a library.
> 
> How would something like this be expressed:
> 
> if(HAS_FEATURE_A)
>    add_source_to_library(foo foo.c)

Or to make it a bit more complex:

srcs = foo.c, bar.c, blub.c

if(Windows)
   srcs += win.c

if (HAVE_MOUNT_H)
   srcs += mount.c

if(BSD || HAVE_WHATEVER)
   if (SOME_VERSION < 1.0)
      srcs += x1.c
   else
      srcs += x2.c

add_executable(hello $srcs)

I think an IDE cannot decide automatically where to add a file here.
Also I cannot imagine how to present those different places in a GUI (...and 
the GUI  would still be somewhat easier to understand than just looking at the 
cmake  script).

So, I'm curious how you plan to solve this.

Alex


More information about the Qt5-feedback mailing list