cmake linking to old libraries. Bug or feature? (was: Re: KDE/kdebase/workspace/plasma/dataengines)
Thiago Macieira
thiago at kde.org
Fri May 8 16:12:07 CEST 2009
Em Sexta-feira 08 Maio 2009, às 14:41:01, Thiago Macieira escreveu:
> Em Quinta-feira 07 Maio 2009, às 17:50:55, Sebastian Kügler escreveu:
> > SVN commit 964889 by sebas:
> >
> > Add Akonadi libs
> >
> > This should resolve the linking problems thiago got. Thiago, can you
> > confirm?
>
> No, sorry, still not working.
>
> You're linking to ${KDE4_AKONADI_LIBS} but that variable is not defined
> anywhere. I've just updated and rebuilt Akonadi and I don't see that
> anywhere.
>
> A full grep of kdesupport, kdelibs, kdepimlibs and kdebase yields only two
> results for that string and they're both acceors (not settings it).
Actually, I found where that variable is defined. It took some help from the
folks in #kontact to find it: it's defined in the KdepimLibsConfig.cmake, by way
of a macro. That's why my grep didn't turn it up.
So it appears that the variable is properly defined after all:
message("Here's akonadi: " ${KDE4_AKONADI_LIBS})
Here's akonadi: KDEPIMLibs__akonadi-kde
That's the correct value, according to the developers (that surprised me).
So the problem had to be somewhere else. After searching a bit, I found that
the link line to the dataengine was:
g++ [...] -o ../../../../lib/plasma_engine_akonadi.so [...]
/home/tmacieir/KDE-4.3/lib/libakonadi-kde.so.4.2.0
So it was linking to the older library found (I had newer versions). Since
none of the find_package or macro_optional_find_package for kdepimlibs had the
version number, can we say it's a feature to link to the lowest version found?
I.e., is this intentional so that we catch requirements for later features?
I tried to write in
kdebase/workspace/plasma/dataengines/akonadi/CMakeLists.txt:
find_package(KdepimLibs 4.3 REQUIRED)
and that didn't work. I did have the "4.3.0" version installed from an earlier
build, before it was removed. So another question: if a later dependency
requires a newer version than a previous dependency, does cmake use the most
constraining requirement? I would be surprised if it did, but it would be
nice.
In any case, after changing
kdebase/workspace/plasma/dataengines/CMakeLists.txt to say:
macro_optional_find_package(KdepimLibs 4.2.85)
things started working. I have committed that fix.
Then I deleted the the lib/cmake/KdepimLibs-4.3.0/ directory from my KDE 4
installation and things started working without any version number at all (the
code before my commit). I can't explain why. But this is a surprise factor and
could be a bug.
In time, I still have both lib/cmake/KdepimLibs-4.2.0 and
lib/cmake/KdepimLibs-4.2.85 in my installation. Why are these files version-
numbered anyways?
--
Thiago Macieira - thiago (AT) macieira.info - thiago (AT) kde.org
Senior Product Manager - Nokia, Qt Software
PGP/GPG: 0x6EF45358; fingerprint:
E067 918B B660 DBD1 105C 966C 33F5 F005 6EF4 5358
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: This is a digitally signed message part.
Url : http://mail.kde.org/pipermail/kde-buildsystem/attachments/20090508/bd7fff24/attachment.sig
More information about the Kde-buildsystem
mailing list