On Jun 21, 2017, at 8:48 PM, Peter Dimov via Boost <boost@lists.boost.org> wrote:
Louis Dionne wrote:
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/df7b6888752097e25bfc2333f6d897ca#file-minima...
To get back to this... it ain't so easy. On Linux, where the default is --layout=system, you indeed can only have libhana.a and libhana.so (a link to libhana.so.1.65.0 or something like that).
But on Windows, `b2 --build-type=complete --with-system toolset=msvc-14.1` gives you this:
boost_system-vc141-mt-1_65.dll boost_system-vc141-mt-1_65.lib boost_system-vc141-mt-gd-1_65.dll boost_system-vc141-mt-gd-1_65.lib libboost_system-vc141-mt-1_65.lib libboost_system-vc141-mt-gd-1_65.lib libboost_system-vc141-mt-s-1_65.lib libboost_system-vc141-mt-sgd-1_65.lib libboost_system-vc141-s-1_65.lib libboost_system-vc141-sgd-1_65.lib
and of course compiling with a different toolset would give you the appropriate, different, names. You can have all of these installed simultaneously.
So boost_system-config.cmake needs to be slightly more elaborate.
Yes. For debug and release variants, I believe you can use the `$<CONFIG>` generator expression: set_target_properties(boost::system PROPERTIES IMPORTED_IMPLIB "$<IF:$<CONFIG:release>,${_IMPORT_PREFIX}/lib/boost_system-vc141-mt-gd-1_65.lib,boost_system-vc141-mt-1_65.lib>" IMPORTED_LOCATION "$<IF:$<CONFIG:release>,${_IMPORT_PREFIX}/lib/boost_system-vc141-mt-gd-1_65.dll,boost_system-vc141-mt-1_65.dll>" ) Which will pick debug or release based on that. However, to choose between the other variants, we can probably use the `COMPONENTS` arguments in `find_package`. So the user can say `find_package(boost_system COMPONENTS static mt)`, or something like that. We also, probably want to make the components requests transitive as well: find_dependency(boost_system COMPONENTS ${${CMAKE_FIND_PACKAGE_NAM}_FIND_COMPONENTS})