On Friday 17 February 2012, Brad King wrote: > On 2/17/2012 4:29 AM, Alexander Neundorf wrote: > > I collected the various error messages which can be produced in the > > different cases: > > * package not found > > * package found, but version doesn't match > > > > * REQUIRED > > * without REQUIRED > > > > * find_package() with no Find-module present > > * find_package(NO_MODULE) > > > > * find_package() with a wrapper Find-module which does: > > find_package(ecm QUIET NO_MODULE) > > fphsa(ecm CONFIG_MODE) > > Nice. Can you code this into a test in the Tests/CMakeOnly directory? > That way we will have a single place to reference to see all the current > error messages and we will know if things change accidentally.
I'll try to. > On 2/17/2012 5:48 AM, Alexander Neundorf wrote: > > These three points and a small bug fix (error message was not printed at > > all for an invalid CONFIGS name) are now in the > > FindPackage_ImprovedErrorMessages branch and merged into next. > > From your commit message: > > CMake Error at CMakeLists.txt:7 (find_package): > > Could not find module Findecm.cmake or a configuration file > > > > for package ecm with one of the following names: > > ecmConfig.cmake > > ecm-config.cmake > > > > Adjust CMAKE_MODULE_PATH to find Findecm.cmake. To find > > the configuration file, set CMAKE_PREFIX_PATH to the installation > > prefix of ecm, or set ecm_DIR to the directory > > containing a CMake configuration file for ecm. > > Perhaps we can make the distinction between user and developer right > in the message. When there is no Find module the proper message that > a user sees should talk about ecm_DIR and CMAKE_PREFIX_PATH only. > This should be the focus. We can then add an extra note to help > developers use Find modules. Consider: > > CMake Error at CMakeLists.txt:7 (find_package): > No package configuration file for "ecm" found by names: > > ecmConfig.cmake > ecm-config.cmake > > Add the installation prefix of "ecm" to CMAKE_PREFIX_PATH or > set "ecm_DIR" to a directory containing one of the above files. > > (If you are a developer expecting this find_package to load a > Findecm.cmake module then ensure it lies in CMAKE_MODULE_PATH.) I'm still not convinced. Just today I found this commit from last October in kdelibs: http://quickgit.kde.org/index.php?p=kdelibs.git&a=commitdiff&h=ca501aa9f4c1e7adcd42accbd53538502ba50ce3&hp=3186e7a5f3acfaa5b5ac1b5cce9315eb53f54655 Commit message: on win32 we need access to the installed cmake modules dir --- a/cmake/modules/FindKDE4Internal.cmake +++ b/cmake/modules/FindKDE4Internal.cmake @@ -736,6 +736,7 @@ endif(${CMAKE_MAJOR_VERSION}.${CMAKE_MIN option(KDE4_ENABLE_FPIE "Enable platform supports PIE linking") if (WIN32) + list(APPEND CMAKE_MODULE_PATH "${CMAKE_INSTALL_PREFIX}/share/apps/cmake/modules") find_package(KDEWin REQUIRED) option(KDE4_ENABLE_UAC_MANIFEST "add manifest to make..." OFF) if (KDE4_ENABLE_UAC_MANIFEST) This looks really wrong (I mean this directory is not guaranteed to exist at all at cmake time, so it can't help finding a module file), and it was committed by a developer who is using cmake now already since 2006 at least. If I would build this, I would get exactly to case 1) - neither Find-module nor config-file found. As user I should assume that there should be a config file, and I should install the package or set CMAKE_PREFIX_PATH. But this wouldn't help, because actually the Find-module is missing, because in some way the buildsystem expects something wrong. So when I (as user) would assume the package is not installed because the config has not been found, I would be wrong, but I couldn't see this from the code. If config-file searching would have to be enabled, I would know from the error message (which would then say "Find-module not found") that the buildsystem is broken, and not some package is missing or CMAKE_PREFIX_PATH is not set. Alex -- Powered by www.kitware.com Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Follow this link to subscribe/unsubscribe: http://public.kitware.com/cgi-bin/mailman/listinfo/cmake-developers