$include_dir="/home/hyper-archives/boost-build/include"; include("$include_dir/msg-header.inc") ?>
From: brian_at_[hidden]
Date: 2006-09-14 08:34:17
In order to support prebuilt libs in several variants and for several toolsets,
I have so far used the following approach with success. It isn't what it says
in the user manual AFAICT, so I sorta stumbled onto this, but hey...it worked!
---
lib some_library_gcc
:
: <variant>debug:<name>some_library-gcc-d
<variant>release:<name>some_library-gcc
;
lib some_library_msvc
:
: <variant>debug:<name>some_library-msvc-d
<variant>release:<name>some_library-msvc
;
alias some_library
: some_library_gcc
: <toolset>gcc
;
---
... and so on...you get the gist, I'm sure. This with a version of BBv2 that is
about 10 months by now.
Updating to CVS HEAD (as of September 12) this approach fails. It complains
about the rule object(...).__init__ being called an extra argument. Apparently
the parameter "real-name" gets passed both "some_library-gcc-d" and
"some_library_gcc", which is obviously an error.
Instead I have now tried this:
---
lib some_library
:
: <toolset>gcc
<name>some_library-gcc-d <variant>debug
;
lib some_library
:
: <toolset>gcc
<name>some_library-gcc <variant>release
;
---
...and so forth. However:
---
error: No best alternative for src/dir/some_library
next alternative: required properties: <threading>multi <toolset>gcc
<variant>debug
not matched
next alternative: required properties: <threading>multi <toolset>gcc
<variant>release
not matched
---
The culprit seems to be the <threading>multi part; if I supply "threading=multi"
on the command line there are no problems. But why is there a requirement for
multithreading on the lib? I get it not.
Of more interest though, is the correct way to declare all these libs. How
should I declare multiple versions of the same prebuilt link-library? What is
the "correct" syntax?
/Brian