Alexander Neundorf wrote:
Ok, we need a solution here.
Now that cmake is going to enter the "center stage" :-) things are going to 
change in this regard.
Until now cmake comes with FindFoo.cmake modules for all other software packages. Once other software packages will also use cmake as their native buildsystem it will be better if these projects deliver the required cmake files themselves, be it FindFoo.cmake or FooConfig.cmake files.
In KDE we have now already two "independent" software packages:
kdewin32 and qtdbus, which both use cmake as their native build system, which 
are both independent from KDE and which both have to be installed before 
starting to compile KDE (i.e. kdelibs).
Now in kdelibs we need a way to find kdewin32 and qtdbus.
For kdewin32 this wouldn't be a big problem. For qtdbus there are more issues. 
It features some cmake macros for code generation (QTDBUS_ADD_INTERFACES()). 
These are used when building qtdbus itself and also when compiling software 
which uses qtdbus. So qtdbus should install the cmake files which contain these 
macros.
Requiring every user to manually adjust KDEWIN32_Dir and QTDBUS_Dir is not 
really an option for the long term.

What's wrong with using FIND_PATH to locate FooConfig.cmake as I suggested previously? Then kdelibs would have a FindFoo.cmake that contains no knowledge of Foo except that it provides a FooConfig.cmake. Project Foo would install FooConfig.cmake to contain all the information about where Foo is located. The CMake code in kdelibs would have

FIND_PACKAGE(Foo)

which uses the kdelibs copy of the simple FindFoo.cmake. If it is not found automatically for some reason then the user would set Foo_DIR to the location of one file (rather than Foo_INCLUDE_DIR and Foo_LIBRARY separately).

In this solution FindFoo.cmake contains only a few lines like

find_path(QtDBUS_DIR FindQtDBUS.cmake PATHS ...)
if(EXISTS ${QtDBUS_DIR}/QtDBUSConfig.cmake)
  include(${QtDBUS_DIR}/QtDBUSConfig.cmake)
else(EXISTS ${QtDBUS_DIR}/QtDBUSConfig.cmake)
  # ...report not found...
endif(EXISTS ${QtDBUS_DIR}/QtDBUSConfig.cmake)

which does not depend on the Foo version and thus does not have to come with Foo. Since the find_path command can list PATH_SUFFIXES and other places to look, kdelibs should be able to find Foo automatically.

-Brad
_______________________________________________
CMake mailing list
CMake@cmake.org
http://www.cmake.org/mailman/listinfo/cmake

Reply via email to