
В письме от вторник, 2 ноября 2021 г. 22:32:37 MSK пользователь Niall Douglas via Boost написал:
The correct solution here is that b2 doesn't misrepresent header only libraries to cmake as not being INTERFACE libraries.
I've skimmed through boost-install code and I think this is doable. There's already a hard-coded list of b2 targets that should map to INTERFACE CMake targets, it should be possible to extend the logic to any alias target. One thing to note is that alias targets aren't visible on the level CMake config module generation (inside boost-install) currently operates. This will have the effect that if header-only boost_foo depends on header-only boost_bar which in turn depends on compiled target boost_baz, CMake target Boost::foo will depend on Boost::baz, not on Boost::bar. Finally, there's a question of whether this should be done at all. CMake's FindBoost does not declare any targets for header-only libraries. Conan- generated CMake configs don't do that either. If a Boost user adds a dependency to Boost::process in his CML, he is now required to use Boost-generated CMake configs. This is OK when the build environment is controlled (e.g. closed source), but probably is not OK for open source libraries that depend on Boost.