From: Jurko GospodnetiÄ (jurko.gospodnetic_at_[hidden])
Date: 2008-08-20 14:00:08
> I'm new to using Jam and Boost.Build, so I hope this is not a dumb question.
> It appears that Boost.Build detects, to a certain extent, the
> Microsoft compiler that is installed and generates the appropriate
> output directories. For example, using MSVC++ Express 2005, I get
> bin\msvc-8.0express\debug and bin\msvc-8.0express\release. My question
> is, shouldn't the actual runtime library version be checked and used
> to specify the output directory? For example, I believe that the pre
> SP1 toolchain links against MSVCRT 8.0.50727.42, while SP1 links
> against 8.0.50727.762. I think it is true that you can't mix
> libraries and executables between the two. Shouldn't Boost.Build
> create output directories that differentiate between the two?
> It appears that recent releases of the compiler sort of indicate the
> library version in the compiler version. For example, the 2005 SP1
> compiler is version 14.00.50727.762. The last two fields in the
> compiler version match the last two fields in the runtime lib version.
If someone can specify the exact algorithm for deducing which runtime
library is used, perhaps something could be done about this but I am not
really sure I follow you here. How does choosing the compiler/linker
cause you to link to a different runtime library? That seems like an
orthogonal issue and you should be able to configure your build to use a
new compiler and an older run-time library and vice versa.
On the other hand, perhaps there could be some use in teaching MSVC
to differentiate between SP1 and noSP version of msvc-8.0 but I am not
really sure how that could be done.
Feel free to look through the tools/msvc.jam module which implements
all the msvc toolset autodetection logic and suggest patches.
Boost-Build list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk