複数の msvc のバージョンでコンパイル


msvc-8.0 や msvc-9.0 等を一緒にコンパイルしたい。
とりあえず、先に結論だけ。


[build.bat]

set BOOST_BUILD_PATH=/boost/boost_1_44_0/tools/build/v2

call "C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\vsvars32.bat"
bjam toolset=msvc-8.0

call "C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\vsvars32.bat"
bjam toolset=msvc-9.0

call "C:\Program Files\Microsoft Visual Studio 10.0\Common7\Tools\vsvars32.bat"
bjam toolset=msvc-10.0


手元の環境では、msvc-10.0 以外をコンパイルする場合は、事前に

C:\Program Files\Microsoft Visual Studio 10.0\Common7\Tools\vsvars32.bat

を呼んでおく必要があるみたいです。


例えば、msvc-9.0 でコンパイルする場合は、

call "C:\Program Files\Microsoft Visual Studio 9\Common7\Tools\vsvars32.bat"
bjam toolset=msvc-9.0

こんな感じになります。


最初は、

call "C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\vsvars32.bat"
call "C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\vsvars32.bat"
call "C:\Program Files\Microsoft Visual Studio 10.0\Common7\Tools\vsvars32.bat"
bjam toolset=msvc-8.0,msvc-9.0,msvc-10.0

と、やってみたんですが、これだと cl.exe が競合してしまい、うまく対象のコンパイルが出来ないみたいです。
この場合だと全て vc10.0 でコンパイルされました。


そんな訳で最終的に、冒頭に書いたような感じになりました。

call "C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\vsvars32.bat"
bjam toolset=msvc-8.0

call "C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\vsvars32.bat"
bjam toolset=msvc-9.0

call "C:\Program Files\Microsoft Visual Studio 10.0\Common7\Tools\vsvars32.bat"
bjam toolset=msvc-10.0


うーん、ださい。
何か他に回避方法があるのかしら…。