Making writing Config.cmake files easier - updated example

Alexander Neundorf neundorf at kde.org
Tue Jan 17 19:43:04 UTC 2012


On Tuesday 17 January 2012, Yury G. Kudryashov wrote:
> Alexander Neundorf wrote:
> > On Tuesday 17 January 2012, Yury G. Kudryashov wrote:
> >> so we need to ensure (or document?) that the
> >> same directory used while writing MyLibConfig.cmake and installing it.
> > 
> > Hmm, I don't understand exactly what you mean, can you please explain a
> > bit more ?
> 
> Look at the following code:
> 
> set(CMAKECONFIG_INSTALL_DIR lib/cmake/MyLib)
> #MyLibConfig hardcodes $prefix/lib/cmake/MyLib
> configure_file(MyLibConfig.cmake.in MyLibConfig.cmake)
> #but is actually installed to a different directory
> install(FILES ${CMAKE_CURRENT_BINARY_DIR}/MyLibConig.cmake DESTINATION
> lib/cmake)
> 
> My points are:
> 1. The contents of MyLibConfigVersion.cmake does not depend on the
> DESTINATION argument that will be passed to install(FILES).
> 2. MyLibConfig.cmake content does.

I guess you want to show me that the example above is buggy, i.e. splitting 
creating and installing can lead to buggy cmake code, while combining it makes 
this impossible ?

> 3. Writing MyLibConfig.cmake to ${CMAKE_CURRENT_BINARY_DIR} is an
> implementation detail, not a part of "public" API. We can hide this file by
> placing it to CMakeFiles subdirectory.

As I said before, I wouldn't hide this file too much from the user. It should 
be easy for the developer to have a look at the file, IMO it shouldn't be 
hidden in a subdirectory.

> So, the macro should be called 'install_basic_config_file()'.

Before going too far in one direction, please post a proposal to cmake-
developers.
Btw., I added you here: http://community.kde.org/Frameworks/Epics/CMake :-)

which is the KDE frameworks cmake planning page, linked from here 
http://community.kde.org/Frameworks/Epics

Thanks
Alex


More information about the Kde-buildsystem mailing list