I\'ve downloaded boost and built it, and not for the first time, but then things started to seem weird.
At first I got these errors while compiling my project (which use
Regarding the reported error: Name clash for '
:
I'm just summarizing here the explanation and solution (which @Nitzan Tomer gave briefly above, and for which, @Samidamaru 's answer did not provide a resolution).
The problem was about --layout
specification. See b2 --help
for the --layout
option.
On Linux the default layout is system
, which means that for all kind of builds, the libraries are created with the schema: libboost_
(or .lib
on Windows).
It means that the same file would be created both for debug
and release
variant. Since Nitzan requested both variants by passing variant=debug,release
the created files would overwrite each other. b2
reported this as an error.
+-----------------------+-------------------------------------------------------------------------------+----------------------------------------+-------------------------+ | | --layout | +-----------------------+-------------------------------------------------------------------------------+----------------------------------------+-------------------------+ | | versioned | tagged | system | +-----------------------+-------------------------------------------------------------------------------+----------------------------------------+-------------------------+ | Library file name: | libboost_{lib name}-{toolset}[-mt]-{ABI tag}-{ARCH tag}-{boost ver tag}.lib | libboost_{lib name}[-mt]-{ABI tag}.lib | libboost_{lib name}.lib | +-----------------------+-------------------------------------------------------------------------------+----------------------------------------+-------------------------+ | Header file directory:| include/boost_{boost ver tag} | include | include | +-----------------------+-------------------------------------------------------------------------------+----------------------------------------+-------------------------+ | Notes: | Default on Windows. | Different toolsets (eg. different | Default on Linux. | | | All variations can be created in the same folder. | compiler versions), architecture and | All variations must be | | | See "Library naming" at | address-model CANNOT be generated in | created in separate | | | https://www.boost.org/doc/libs/1_68_0/more/getting_started/unix-variants.html | the same folder. But relase/debug and | folders. | | | The corresponding b2 options are also indicated on this page. | single/multi-threaded can be. | | +-----------------------+-------------------------------------------------------------------------------+----------------------------------------+-------------------------+
Of course on Linux the .a
and .so
post-fixes are used vs. .lib
and .dll
on Windows. The lib
prefix is omitted from DLL names on Windows.
On Windows the single-threaded versions can be created only if the runtime-link=static
option was set.
For headers, the "usual" boost
directory is still created under the indicated folder.
It means that if you passed e.g. --prefix=/tools/boost
to b2
, then the following directory structure is created for the versioned
layout:
/tools/boost | +--- lib | +--- include +--- boost_{boost version tag} | +--- boost +--- accumulators +--- algorithm etc.
The boost_{boost version tag}
(e.g. boost_1_68
) intermediate directory is not created for other layouts.