[Digikam-devel] Review Request: Install LibKexiv2Config.cmake

Alexander Neundorf neundorf at kde.org
Sun Jan 15 14:51:32 GMT 2012


On Sunday 15 January 2012, Yury Georgievich Kudryashov wrote:
> > On Jan. 15, 2012, 1:45 p.m., Alexander Neundorf wrote:
> > > IF(WIN32 AND NOT CYGWIN)
> > > 
> > >     SET(DEF_CMAKEFILES_INSTALL_DIR CMake)
> > > 
> > > ELSE()
> > > 
> > >     SET(DEF_CMAKEFILES_INSTALL_DIR ${LIB_INSTALL_DIR}/cmake/LibKexiv2)
> > > 
> > > ENDIF()
> > > 
> > > Why is WIN32 special cased ?
> 
> `man cmake` says that cmake does not look into $prefix/lib/cmake/name on
> Windows. 

Indeed.
Our KDE-on-Windows never complained about that the Config.cmake files would 
not be found.
Also, from a quick look at cmFindPackageCommand.cxx, it looks like lib/ and 
share/ should also be searched under Windows, no ifdefs there:


 // Construct list of common install locations (lib and share).
  std::vector<std::string> common;
  if(!this->LibraryArchitecture.empty())
    {
    common.push_back("lib/"+this->LibraryArchitecture);
    }
  if(this->UseLib64Paths)
    {
    common.push_back("lib64");
    }
  common.push_back("lib");
  common.push_back("share");

  //  PREFIX/(lib/ARCH|lib|share)/cmake/(Foo|foo|FOO).*/
  {
  cmFindPackageFileList lister(this);
  lister
    / cmFileListGeneratorFixed(prefix)
    / cmFileListGeneratorEnumerate(common)
    / cmFileListGeneratorFixed("cmake")
    / cmFileListGeneratorProject(this->Names);
  if(lister.Search())
    {
    return true;
    }
  }

  //  PREFIX/(lib/ARCH|lib|share)/(Foo|foo|FOO).*/
  {
  cmFindPackageFileList lister(this);
  lister
    / cmFileListGeneratorFixed(prefix)
    / cmFileListGeneratorEnumerate(common)
    / cmFileListGeneratorProject(this->Names);
  if(lister.Search())
    {
    return true;
    }
  }

  //  PREFIX/(lib/ARCH|lib|share)/(Foo|foo|FOO).*/(cmake|CMake)/
  {
  cmFindPackageFileList lister(this);
  lister
    / cmFileListGeneratorFixed(prefix)
    / cmFileListGeneratorEnumerate(common)
    / cmFileListGeneratorProject(this->Names)
    / cmFileListGeneratorCaseInsensitive("cmake");
  if(lister.Search())
    {
    return true;
    }
  }


> I took this code from
> http://www.cmake.org/Wiki/CMake/Tutorials/How_to_create_a_ProjectConfig.cm
> ake_file
>
> I've just realized that probably on windows LIB_INSTALL_DIR points to
> $prefix, not $prefix/lib. In this case this trick is not needed. Am I
> right?

No. From FindKDE4Internal.cmake:

if (WIN32)
...
   set(LIB_INSTALL_DIR      "lib${LIB_SUFFIX}" )
...

set(INSTALL_TARGETS_DEFAULT_ARGS  RUNTIME DESTINATION "${BIN_INSTALL_DIR}"
                                  LIBRARY DESTINATION "${LIB_INSTALL_DIR}"
                                  ARCHIVE DESTINATION "${LIB_INSTALL_DIR}"
                                                          COMPONENT Devel )

> 
> 
> - Yury Georgievich
> 
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> http://git.reviewboard.kde.org/r/103701/#review9830
> -----------------------------------------------------------
> 
> On Jan. 14, 2012, 9:24 p.m., Yury Georgievich Kudryashov wrote:
> > -----------------------------------------------------------
> > This is an automatically generated e-mail. To reply, visit:
> > http://git.reviewboard.kde.org/r/103701/
> > -----------------------------------------------------------
> > 
> > (Updated Jan. 14, 2012, 9:24 p.m.)
> > 
> > 
> > Review request for Build System and Digikam.
> > 
> > 
> > Description
> > -------
> > 
> > Now
> > find_package(LibKexiv2 NO_MODULE)
> > finds LibKexiv2, removing need for large FindLibKexiv2.cmake script.
> > 
> > I've decided to install LibKexiv2Config.cmake, not Kexiv2Config.cmake to
> > avoid conflicts with FindKexiv2.cmake from kdelibs.
> > 
> > P.S.: I think about moving large parts to a macro.
> > 
> > 
> > Diffs
> > -----
> > 
> >   CMakeLists.txt 0ecd233
> >   LibKexiv2Config-external.cmake.in PRE-CREATION
> >   LibKexiv2Config.cmake.in PRE-CREATION
> >   libkexiv2/CMakeLists.txt 8a6b822
> > 
> > Diff: http://git.reviewboard.kde.org/r/103701/diff/diff
> > 
> > 
> > Testing
> > -------
> > 
> > $ cmake .. -DCMAKE_INSTALL_PREFIX=$PWD/../install; cd ..;
> > $ cmake --find-package -DCMAKE_PREFIX_PATH=$PWD/i -DNAME=LibKexiv2
> > -DCOMPILER_ID=GNU -DLANGUAGE=CXX -DMODE=EXIST $ cmake --find-package
> > -DCMAKE_PREFIX_PATH=$PWD/i -DNAME=LibKexiv2 -DCOMPILER_ID=GNU
> > -DLANGUAGE=CXX -DMODE=COMPILE $ cmake --find-package
> > -DCMAKE_PREFIX_PATH=$PWD/i -DNAME=LibKexiv2 -DCOMPILER_ID=GNU
> > -DLANGUAGE=CXX -DMODE=LINK
> > 
> > 
> > Thanks,
> > 
> > Yury Georgievich Kudryashov




More information about the Digikam-devel mailing list