Review Request: Install LibKexiv2Config.cmake
Alexander Neundorf
neundorf at kde.org
Sun Jan 15 14:51:32 UTC 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 Kde-buildsystem
mailing list