overriding CMAKE_MODULE_PATH
Christophe Giboudeaux
cgiboudeaux at gmail.com
Mon Aug 16 14:38:24 CEST 2010
Hi,
Le 16/08/2010 12:20, Michael Jansen a écrit :
> Because it is the right thing to do. The first line overriding it is
> just plain wrong imho.
>
> 1. CMAKE_MODULE_PATH is documented in cmake at the same level as
> CMAKE_PREFIX_PATH as a variable that changes behaviour. Which means a
> user can and will expect he is able to override it. Which will break
> with the first line.
This is incorrect, CMAKE_PREFIX_PATH is an environment variable and
CMAKE_MODULE_PATH is a CMake parameter
(http://public.kitware.com/Wiki/CMake_Useful_Variables : _MODULE belongs
to the "Locations" section and _PREFIX is under "Environment Variables")
> 2. KDE installs a ton of useful not kde related FindXYZ*.cmake files
> into a path != /usr/share/cmake... . If a non kde project wants to use
> it (even a small homegrown project) the user has to set
> CMAKE_MODULE_PATH from the outside. Therefore he needs the line from
> Yury in his CMakeLists.txt. Since we as kde are the poster child for
> cmake usage we should implement our cmake files as examples for other to
> copy.
This is exactly what CMAKE_PREFIX_PATH does: give the order in which
CMake looks for stuff. There's no need for this hack.
>
> 3. If someone develops a small lib he plans to add as a kde dependency
> he probably installs it into some non distro prefix so he doesn't need
> root rights to install it. So he needs to override CMAKE_MODULE_PATH in
> say koffice to make it pick up that location. And i would expect it to
> work. Remember that his KDELIBS_PREFIX could be distro provided and
> koffice is installed into /usr/local/ .
>
Once again, CMAKE_PREFIX_PATH is enough. Here's an example:
# echo $CMAKE_PREFIX_PATH
/kde/inst/akonadi:/kde/inst/extragear-network:/kde/inst/kdepim:/kde/inst/kdepimlibs:/kde/inst/kdepim-runtime:/kde/inst/pim
and CMake ran in kdenetwork has no problem to find libktorrent:
-- Found libktorrent: /kde/inst/extragear-network/lib64/libktorrent.so
WRT to the original post, there are two issues:
- libktorrent should not install FindKtorrent.cmake since it's supposed
to help finding libktorrent and not ktorrent,
- It should install a LibKtorrentConfig.cmake instead of a FindXXX.cmake
for the reasons Andreas already gave.
Christophe.
More information about the Kde-buildsystem
mailing list