Making writing Config.cmake files easier - updated example

Yury G. Kudryashov urkud.urkud at gmail.com
Tue Jan 17 19:53:15 UTC 2012


Alexander Neundorf wrote:

> 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 ?
Yes.
> 
>> 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.
The draft mail is opened for about a day. I have to find an hour to think 
about it and write a good proposal.
-- 
Yury G. Kudryashov,
mailto: urkud at mccme.ru



More information about the Kde-buildsystem mailing list