[build2] pkgconfig files, header-only libraries, and cppget's boost packages

Boris Kolpackov boris at codesynthesis.com
Mon Sep 26 13:30:54 UTC 2022


Michael Martín Moro via users <users at build2.org> writes:


> They use `import intf_libs` or `import impl_libs` for importing all boost
> dependencies... including header only ones.
> 
> Seems to me like it resuls in pkgconfig files including a lot of extra
> library to link that do not exist. You can check it out with
> libboost-program-options or libboost-random: there are some -lboost_any
> here and -lboost_config there that shouldn't be there.

No, this is by design. We list header-only libraries in pkg-config files
in order to load their own pkg-config files, which may (1) export some
preprocessor options (-I, -D) or (2) link non-header-only libraries that
they may depend upon (in build2 header-only libraries can depend on non-
header-only).


> It is my understanding that those header-only libraries should be imported
> using `import libs` instead.

There is nothing special about intf_libs/impl_libs/libs after import,
they are just variable names. By convention we use intf_libs/impl_libs
in libraries where it's required to separate interface (intf) and
implementation (impl) libraries and we use libs in executables where
such a separation isn't needed. For background, see:

https://build2.org/build2/doc/build2-build-system-manual.xhtml#intro-lib



More information about the users mailing list