複数の 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
うーん、ださい。
何か他に回避方法があるのかしら…。