On Monday 14 December 2009 23:29:27 Alexander Neundorf wrote: > On Monday 14 December 2009, Christophe Giboudeaux wrote: > > On Monday 14 December 2009 22:31:38 Alexander Neundorf wrote: > > > On Monday 14 December 2009, Christophe Giboudeaux wrote: > > > > Here's an example showing why the REQUIRED keyword may also be > > > > misleading: > > > > > > > > CMakeLists.txt: > > > > > > > > project(demo) > > > > cmake_minimum_required(VERSION 2.8) > > > > find_package(SharedDesktopOntologies 0.3 REQUIRED) > > > > > > > > > > > > SharedDesktopOntologies 0.3 doesn't exist. When running this > > > > CMakeLists.txt, the only information you will get is that: > > > > > > > > [quote] > > > > CMake Error at CMakeLists.txt:4 (find_package): > > > > Could not find module FindSharedDesktopOntologies.cmake or a > > > > configuration file for package SharedDesktopOntologies. > > > > > > > > Adjust CMAKE_MODULE_PATH to find FindSharedDesktopOntologies.cmake > > > > or set SharedDesktopOntologies_DIR to the directory containing a > > > > CMake configuration file for SharedDesktopOntologies. The file will > > > > have one of the following names: > > > > > > > > SharedDesktopOntologiesConfig.cmake > > > > shareddesktopontologies-config.cmake > > > > > > > > > > > > -- Configuring incomplete, errors occurred! > > > > > > > > [/quote] > > > > > > > > Which is totally wrong. The directory which contains > > > > > > Please post this to the cmake bugtracker at > > > http://public.kitware.com/Bug , that the error message is misleading in > > > the case that there is "just" a version mismatch. > > > > > > > SharedDesktopOntologiesConfig.cmake is in my CMAKE_PREFIX_PATH, if I > > > > change the minimum version to 0.2, CMake will find it. > > > > > > What we can do beside that, is to add a small > > > FindSharedDesktopOntologies.cmake, which will basically just wrap the > > > find_package(... NO_MODULE) call with a nicer error message. > > > > This file exists in kdelibs and creates two issues : > > > > 1/ > > project(demo) > > cmake_minimum_required(VERSION 2.8) > > find_package(KDE4 REQUIRED) > > include(KDE4Defaults) > > find_package(SharedDesktopOntologies 0.3 REQUIRED) > > > > will claim that SharedDesktopOntologies is found: > > > > [quote] > > -- Found KDE 4.4 include dir: /usr/include > > -- Found KDE 4.4 library dir: /usr/lib > > -- Found the KDE4 kconfig_compiler preprocessor: > > /usr/bin/kconfig_compiler -- Found automoc4: /usr/bin/automoc4 > > -- Found SharedDesktopOntologies: /usr/share/ontology > > -- Configuring done > > [/quote] > > Well, there is no magic there and nothing which couldn't be changed. > I think version 0.1 is the version required for kdelibs ?
there's no such indication in kdelibs/CMakeLists.txt. It just optionally looks for S.D.O. As SDO 0.3 doesn't exist, I really think CMake should display an error for this testcase. > If that's wrong, which version is required ? No idea for kdelibs. 0.2 is probably a good choice. > > > 2/ in kdepim and kdepim-runtime, soprano and nepomuk are optional but > > SharedDesktopOntologies is required if nepomuk is not disabled and found > > on the system: > > > > macro_optional_find_package(Nepomuk) > > macro_log_feature(Nepomuk_FOUND "Nepomuk" "The Nepomuk libraries" > > "http://www.kde.org" FALSE "" "Nepomuk extends the search and tagging > > functionalities in KMail and Akonadi") > > > > # We require SharedDesktopOntology if nepomuk is enabled and was found on > > the system. > > if(WITH_Nepomuk AND Nepomuk_FOUND) > > find_package(SharedDesktopOntologies 0.2) > > Oh, here version 0.2 is required. > Is it a good idea to require 0.1 in kdelibs and 0.2 in kdepim ? again, kdelibs only looks for SDO, not for SDO version 0.x. > Shouldn't we require 0.2 then also in kdelibs ? > Otherwise we get some partly support for all that I assume. The only thing I'm sure of is that kdepim/kdepim-runtime will not compile with 0.1. no idea about kdebase or the other modules. > > > macro_log_feature(SHAREDDESKTOPONTOLOGIES_FOUND "Shared desktop > > ontologies" "Desktop ontologies" "http://oscaf.sourceforge.net" TRUE > > "0.2" "Ontologies necessary for the Nepomuk semantic desktop.") > > endif(WITH_Nepomuk AND Nepomuk_FOUND) > > > > CMake will claim that SharedDesktopOntologies is found even if the wrong > > version is installed and it will claim that Nepomuk wasn't found if S.D.O > > is not installed > > The issue comes from FindNepomuk.cmake which calls > > FindSharedDesktopOntologies.cmake but doesn't require S.D.O: > > macro_log_feature(SHAREDDESKTOPONTOLOGIES_FOUND "Shared desktop > > ontologies" "Desktop ontologies" "http://oscaf.sourceforge.net" FALSE "" > > "Ontologies necessary for the Nepomuk semantic desktop.") > > > > If this is intentional, I have two alternatives: > > * Use find_package(SharedDesktopOntologies 0.2 NO_MODULE) but I end up > > with two SDO lines in the macro_display_feature_log output. > > > > * Use an option to enable our nepomuk agents and look for SDO before > > Nepomuk. > > I am still unclear about the optional-ness of nepomuk and the required > versions of dependencies it needs... > /agree I'll add an option in kdepim instead of using macro_optional_find_package(nepomuk). Christophe.
signature.asc
Description: This is a digitally signed message part.
_______________________________________________ Kde-buildsystem mailing list [email protected] https://mail.kde.org/mailman/listinfo/kde-buildsystem
