aboutsummaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2018-09-05 14:53:44 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2018-09-05 14:53:44 +0200
commit4719fa5302d97ccf3c802150eaf0b58087f3741e (patch)
tree02c643847c74541ae5e8d31f0d50847b6a3d10db /doc
parentda863cd132e6d6024707027459b371c2bff9ca71 (diff)
Add note on header-only/binless libraries in manual
Diffstat (limited to 'doc')
-rw-r--r--doc/manual.cli14
1 files changed, 14 insertions, 0 deletions
diff --git a/doc/manual.cli b/doc/manual.cli
index a893622..e1d11e6 100644
--- a/doc/manual.cli
+++ b/doc/manual.cli
@@ -2511,6 +2511,20 @@ $ b config.bin.lib=both config.bin.exe.lib=static
See the \c{bin} module for more information. @@ ref|
+Note also that we don't need to change anything in the above \c{buildfile} if
+our library is header-only. In \c{build2} this is handled dynamically based on
+the absence of source file prerequisites. In fact, the same library can be
+header-only on some platforms or in some configuration and \"source-full\" in
+others.
+
+\N|In \c{build2} a header-only library (or a module interface-only library) is
+not a different kind of library compared to static/shared libraries but is
+rather a binary-less, or \i{binless} for short, library. So, theoretically, it
+is possible to have a library that has a binless static and a binary-full
+(\i{binfull}) shared variants. Note also that binless libraries can depend on
+binfull libraries and are fully supported where the \c{pkg-config(1)}
+functionality is concerned.|
+
Let's now turn to the second subject of this section and the last unexplained
bit in our \c{buildfile}: shared library versionsing. Here is the relevant
fragment: