changes to how kdepimlibs and kdebase/workspace are installed and found

Brad King brad.king at kitware.com
Tue Dec 9 22:16:31 CET 2008


Alexander Neundorf wrote:
> On Tuesday 09 December 2008, Modestas Vainius wrote:
>> Hello,
>>
>> antradienis 09 Gruodis 2008, Brad King rašė:
>>> I've fixed this in CMake HEAD:
>>>
>>> /cvsroot/CMake/CMake/Source/cmFindPackageCommand.cxx,v  <--
>>> Source/cmFindPackageCommand.cxx
>>> new revision: 1.52; previous revision: 1.51
>> Thank you for such quick response and fix. Now I wish Alex could add
>> support for this path to KDE. /usr/lib/Kdepimlibs and
>> /usr/lib/KDE4Workspace currently contains only cmake stuff which are
>> "found" via
>> cmake/modules/Find{Kdepimlibs,KDE4Workspace}.cmake anyway. So it is easy to
>> workaround lack of native cmake support for this path in 2.6.2.
> 
> So we'll have to do something like:
> 
> if (${CMAKE_VERSION_MAJOR}.${CMAKE_VERSION_MINOR}.${CMAKE_VERSION_PATCH} 
> VERSION_GREATER 2.6.2)
>    set(configInstallDir ${LIB_INSTALL_DIR}/cmake/kfoo)
> else ()
>    set(configInstallDir ${LIB_INSTALL_DIR}/kfoo/cmake)
> endif ()

Unfortunately the version of CMake that is doing the *finding* needs to 
be higher than 2.6.2 in order for the cmake/kfoo path to work.  The 
version doing the installing does not matter.  Often they will be the 
same cmake, but sometimes not.

Perhaps you can avoid this by using PATH_SUFFIXES on the inner 
find_package call in your find-modules:

   find_package(KFoo NO_MODULE PATH_SUFFIXES cmake)

Then you can just always install to cmake/kfoo.  Once a version of CMake 
supporting this location is required in the future this suffix can be 
removed.

> Should we include the version number ?
>    set(configInstallDir ${LIB_INSTALL_DIR}/kfoo-x.y.z/cmake)

or perhaps

   set(configInstallDir ${LIB_INSTALL_DIR}/cmake/kfoo-x.y.z)

?  Anyway, yes, I think the version number should be on the directory. 
This will help support multiple KDE versions in the same prefix.  Even 
if that is not a design goal, having the version number in the path does 
not affect CMake's ability to find the package.  It may also give more 
information when helping users remotely.

> Brad: is this version number considered when specifying a minimum version for 
> the package or is it ignored and only a fooVersion.cmake file will be used ?

The latter.  The directory name is purposely and completely ignored (for 
various reasons I'll omit here).  The FooConfigVersion.cmake files are 
the only way to enforce version constraints.

I think you should put the version files in now.  If an installation 
doesn't have one, then versioned requests will not find anything because 
there is no version file to say it supports a particular version.  Once 
you have installations distributed like this it will be hard to add 
versioning later.

-Brad


More information about the Kde-buildsystem mailing list