changes how Qt4 is found in trunk/kdelibs/

Simon Hausmann hausmann at kde.org
Wed Apr 5 20:06:03 CEST 2006


On Wednesday 05 April 2006 17:57, William A. Hoffman wrote:
> At 11:04 AM 4/5/2006, Simon Hausmann wrote:
> >On Wednesday 05 April 2006 16:49, William A. Hoffman wrote:
> >> At 10:37 AM 4/5/2006, Simon Hausmann wrote:
> >> >We solved it differently now. After some discussion and thinking we
> >> > decided against putting it into qmake. Instead we store the path to
> >> > uic and moc now in the pkgconfig files.
> >> >
> >> >That means with Qt 4.2 you'll be able to use pkg-config to figure out
> >> > the libraries + paths for building a Qt application as well as the
> >> > path to moc/uic.
> >> >
> >> >For example:
> >> >
> >> >pkg-config --variable=moc_location QtCore
> >>
> >> What about systems that do not have pkg-config?
> >
> >For those you have to assume the fallback of a in-place installation where
> >everything is inside $prefix and the binaries aren't renamed. This in
> >particular includes Windows :)
>
> I don't think it is just windows, and also this does make it harder to
> work with a non-installed qt, unless the user sets PKG_CONFIG_PATH and
> some other stuff, pkg-config will not even know about the users local
> qt installation.   There is no pkg-config on the mac either.  What about
> SUN, HP, and other commercial unix vendors do they have pkg-config?

Yes, most of them also ship Gnome and Gnome requires pkg-config. (Remember, 
they actually invented/wrote it by generalizing their foo-config scripts)

> >Here's one of the arguments that we came up with against putting it into
> >qmake: pkg-config is the preferred way of figuring out the
> >cflags/lib/libpaths these days. Now if however qmake is used to figure out
> >another component necessary to build projects you could easily run into
> > the situation that due to pkg-config (which obeys the PKG_CONFIG_PATH
> > environment variable) you get for example
> > /home/developer/my/private/qt/build/lib as library directory but qmake is
> > accidentially picked from /usr/bin and reports /usr/bin/uic-qt4 from the
> > path, which may come from a different Qt installation. That's a recipe
> > for problems. Hence the idea that all the information should come from
> > one place: pkg-config files.
>
> I don't see how that can happen.  Our rule is that qmake tells all.
> So the private/qt/build/bin/qmake would have to be used and it should be
> able to tell where to find everything.  I am assuming that qmake itself
> will not ask pkg-config anything, so I guess we could run qmake on a simple
> .pro file and look at the resulting makefile.   I don't think cmake should
> depend on pkg-config, I really like the idea of using qmake.  It is a
> single program that knows exactly how to build the qt it is part of.  So
> for cmake if the users specifies a qmake, they are done, the rest can be
> found from the qmake. This will work on any platform that has qt on it.  
> pkg-config just does not seem cross platform enough.  For example, it is
> not on our solaris, hp, mac, or irix machines.  However, qt can be easily
> installed and built on those machines.

The qmake maintainer, too, suggested the approach of using a .pro file as 
little script, slightly smarter than my idea to grep in the resulting 
Makefile:

debug_and_release {
   message("Config:Debug")
   message("Config:Release")
} CONFIG(debug, debug|release)
   message("Config:Debug")
} else {
   message("Config:Release")
}
message("MOC = $$QMAKE_MOC")
message("RCC = $$QMAKE_RCC")

That way you can query a bit more information.

Simon


More information about the Kde-buildsystem mailing list