On Jun 20, 2017, at 3:25 AM, Mathias Gaunard via Boost
wrote: On 20 June 2017 at 02:28, Louis Dionne via Boost
wrote: So, normally, for a project based on CMake, these XYZConfig.cmake files can be generated automatically by using `install(EXPORT ...)`. The resulting file looks like this (for Hana):
https://gist.github.com/ldionne/df7b6888752097e25bfc2333f6d897 ca#file-what-gets-generated-for-hana-cmake
Basically, we'd want to replicate the functionality provided by this module without necessarily all the boilerplate (since that's generated automatically). Here's a minimal file for Hana (a header only library):
https://gist.github.com/ldionne/df7b6888752097e25bfc2333f6d897 ca#file-minimal-handwritten-config-header-only-cmake
And here's a minimal XYZConfig.cmake file for a library with compiled sources (I added source files to Hana and turned it into a static library to check this):
https://gist.github.com/ldionne/df7b6888752097e25bfc2333f6d897 ca#file-minimal-handwritten-config-static-cmake
Then, each Boost library would simply provide a file like this and install it to the appropriate location when the library is installed. Again, please keep in mind this is only the gist of what would need to be done, not an actual template.
I'm not sure this is the right approach, what happens when you have a transitive dependency? I'd rather just like the direct dependencies, but this format looks like it would need to contain the transitive dependencies too.
The transitive dependency is taken care of by calling `find_package` for each dependency. That is, if Boost.Hana depends on Boost.Foo, then Boost.Hana only states that it depends on some target boost::foo, but this will be defined by `find_package(foo)`, which if that depends another library it will go through the same process.