
On Thu, Jun 22, 2017 at 11:30 AM, P F via Boost <boost@lists.boost.org> wrote:
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/df7b6888752097e25bfc2333f6d897 ca#file-minimal-handwritten-config-static-cmake
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>" )
There are use cases when I want to get the release build of boost even though my own build type is set to Debug. The build type in addition is also completely customizable (see for example the MSVC CMake integration). What should happen when my build type is RelWithDebInfo or MinSizeRel? There should always be a way for users to bail out of the guessing game.
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})
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/ mailman/listinfo.cgi/boost