[Qt-creator] Detecting different build configurations in the .pro file

Orgad and Raizel Shaneh orgads at gmail.com
Mon May 14 16:46:03 CEST 2012


On Mon, May 14, 2012 at 5:40 PM, Coda Highland <chighland at gmail.com> wrote:

> On Mon, May 14, 2012 at 7:41 AM, Duane <duane.hebert at group-upc.com> wrote:
> > On 05/13/2012 01:39 AM, Orgad and Raizel Shaneh wrote:
> >> On Thu, May 10, 2012 at 10:36 PM, Duane Hebert
> >> <duane.hebert at group-upc.com>  wrote:
> >>>
> >>>
> >>> On 05/10/2012 03:29 PM, Orgad and Raizel Shaneh wrote:
> >>>>
> >>>> On Thu, May 10, 2012 at 10:25 PM, Duane<duane.hebert at group-upc.com>
> >>>>   wrote:
> >>>>>
> >>>>> On 05/10/2012 11:11 AM, Daniel Teske wrote:
> >>>>>>
> >>>>>> On Thursday 10 May 2012 16:35:16 ext Duane wrote:
> >>>>>>>
> >>>>>>> We're building for an embedded linux device.  I have a build of qt
> libs
> >>>>>>> using the linux frame buffer instead of x and a build of qt using
> the
> >>>>>>> regular linux desktop stuff.  For development I build with the
> desktop
> >>>>>>> version.  For deployement and hardware testing I build with the
> frame
> >>>>>>> buffer version.  This works well.
> >>>>>>>
> >>>>>>> The trouble is that I have some static libs for qwt and
> >>>>>>> qtsingleapplication, among others that when built, use conditional
> >>>>>>> builds based on Win32 or X11.  So when built for linux they use
> X11 but
> >>>>>>> when I'm building my app for the target, there is no X11.  So I
> have
> >>>>>>> builds of the libs with the frame buffer version of qt as well.
>  This
> >>>>>>> also works but I have to modify the .pro file each time that I
> change
> >>>>>>> build types.
> >>>>>>>
> >>>>>>> What I'd like to do is somehow in my project file include one
> version
> >>>>>>> lib or another based on which build I'm doing.  I was thinking
> maybe
> >>>>>>> using the mkspec or something.  The frame buffer version uses
> >>>>>>> qws/linux-... as opposed to just linux..
> >>>>>>>
> >>>>>>> Any idea how to achieve this or is it not possible?
> >>>>>>
> >>>>>> See http://qt-project.org/doc/qt-4.8/qmake-advanced-usage.html
> >>>>>> You can probably use what is described under "Platform Scope Values"
> >>>>>
> >>>>> Well I thought that I could use something like the example:
> >>>>> message($$QMAKESPEC)
> >>>>>
> >>>>>   linux-g++ {
> >>>>>       message(Linux)
> >>>>>   }
> >>>>>
> >>>>> because when looking at the makespec from the build configuration,
> the
> >>>>> one for the frame buffer shows qws/linux-x86-g++ and the desktop one
> >>>>> shows linux-g++.
> >>>>>
> >>>>>
> >>>>> But when I add
> >>>>> message($$QMAKESPEC)
> >>>>>
> >>>>>   linux-g++ {
> >>>>>       message(Linux)
> >>>>>   }
> >>>>>
> >>>>> qws/linux-x86-g++ {
> >>>>>      message(Linux frame buffer)
> >>>>> }
> >>>>>
> >>>>> to the .pro file, the output that I see is:
> >>>>> Project MESSAGE:
> >>>>> Project MESSAGE: Linux
> >>>>>
> >>>>> So it seems that $$QMAKESPEC is null.
> >>>>>
> >>>>> _______________________________________________
> >>>>> Qt-creator mailing list
> >>>>> Qt-creator at qt-project.org
> >>>>> http://lists.qt-project.org/mailman/listinfo/qt-creator
> >>>>
> >>>> There's an open report for that: QTBUG-22700. I think it's planned (or
> >>>> maybe already implemented?) for Qt 5.0.
> >>>>
> >>>
> >>> Thanks.  I wonder if there is a way to detect if X11 is defined?
> >>
> >> You can test for mkspec, wildcards allowed. In you case:
> >> linux-g++ {
> >>   # X11
> >> }
> >> linux-x86-g++ {
> >>   # framebuffer
> >> }
> >> linux-* {
> >>   # both, excluding windows and mac
> >> }
> >
> >
> > I would have thought so as well but this doesn't work.  In both builds,
> > it falls into the linux-g++ case.  If I go to the projects view and put
> > my mouse over the Qt version combo box, I get the tool tip and it says
> > that the mkspec is qwt/linux-x86-g++.  When I switch builds to the x11
> > build the mkspec is linux-g++.
> >
> > But if I put:
> > linux-x86-g++ {
> >     message (Build using frame buffer)
> >
> > }
> >
> > linux-g++ {
> >    message (Build using X11)
> >
> > }
> >
> >
> > and either build or run qmake, the Build using X11 shows.
> >
> > This is not a severe problem, more of an annoyance. If I switch builds
> > and don't change the .pro file, the build will fail eventually.  But it
> > wastes some time.  I could set up separate projects but the projects are
> > exactly the same except for a few libraries.
>
> I've been known on several occasions to have build-time feature
> switches in the CONFIG variable.
>
> $ qmake -config useFoo
>
> useFoo {
>    DEFINES += USE_FOO
>    LIBS += -L/path/to/foo -lfoo
> }
> else {
>    # deps for non-foo
> }
>
> This works great, though of course you have to remember to pass the
> -config flag to qmake. (But once you've done it once, you can "make
> qmake" to reprocess without having to type the whole command line.)
>
> /s/ Adam
> _______________________________________________
> Qt-creator mailing list
> Qt-creator at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/qt-creator
>

QtC doesn't treat -config well. See
QTCREATORBUG-3791<https://bugreports.qt-project.org/browse/QTCREATORBUG-3791>.
qmake CONFIG+=useFoo is an alternative.

- Orgad
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/qt-creator/attachments/20120514/6f99dcb0/attachment.html>


More information about the Qt-creator mailing list