[CMake] providing library information, what's the cmake way
Johannes Zarl
Johannes.Zarl at jku.at
Wed Nov 24 10:51:55 EST 2010
Hi,
On 11/23/2010 at 21:25, Alexander Neundorf <a.neundorf-work at gmx.net> wrote:
> CMAKE_MODULE_PATH is only for finding Find-modules, not for finding the
> actual packages or Config-files.
> For that you can set CMAKE_PREFIX_PATH. CMake uses each directory contained
> in CMAKE_PREFIX_PATH for all its find_program/file/path/library/package()
> calls to search in the respective subdirectories for the
> executables/files/libraries/Config-files.
Thanks for this information! Knowing this greatly simplifies the whole
find_package stuff...
>> And is there any documentation on how to create a LibraryConfig.cmake file
>> with support for components?
>
> In KDE we have a macro MACRO_WRITE_BASIC_CMAKE_VERSION_FILE() which helps
> with creating a basic version-info file which should be installed along
> with the Config-file.
> It consists of MacroWriteBasicCMakeVersionFile.cmake and
> BasicFindPackageVersion.cmake.in which you can find in
> http://websvn.kde.org/trunk/KDE/kdelibs/cmake/modules/ .
Nice to have some reusable code for versioning...
About the components question again: I played around a bit, and I think I
now more or less have comprehended this. I guess for a package XXX with
components YYY and ZZZ, one could set variables XXX_HAS_YYY and XXX_HAS_ZZZ
and then use a loop like this one in the XXXConfig.cmake file:
foreach( component ${XXX_FIND_COMPONENTS} )
if ( XXX_HAS_${component})
set ( XXX_${component}_FOUND TRUE )
else( XXX_HAS_${component})
if ( ${XXX_FIND_REQUIRED})
message(FATAL_ERROR "Required component ${component} not found!")
elseif ( NOT XXX_FIND_QUIETLY)
message(STATUS "Component ${component} not found!")
endif ( ${XXX_FIND_REQUIRED})
endif ( XXX_HAS_${component})
endforeach( component )
Correct?
Cheers,
Johannes
--
Johannes Zarl
Virtual Reality Services
Johannes Kepler University
Informationsmanagement
Altenbergerstrasze 69
4040 Linz, Austria
Phone: +43 732 2468-8321
johannes.zarl at jku.at
http://vrc.zid.jku.at
More information about the CMake
mailing list