3

「v110_xp」プラットフォーム ツールセット用のb2.exeツールを使用して、現在のブースト ライブラリを自動ビルドすることはできますか?

私はこのようなものを探しています:

set MSVC_TOOLSET=msvc-11.0_xp
set PLATFORM_TOOLSET=v110_xp

b2 --build-dir="..\32\%PLATFORM_TOOLSET%\build" toolset=%MSVC_TOOLSET% --stagedir="..\32\%PLATFORM_TOOLSET%\lib\Debug" variant=debug

現在、このシナリオのコマンド ライン サポートはないようです。それが正しいか?

4

4 に答える 4

3

Boost 1.55が登場するまで、@Paulと@Kanchariからの回答はうまくいきました。その後、さらに微調整を行う必要がありました。そこで、Boost ディストリビューションを変更しなくても機能する単純なシェル スクリプトに対する @Kanchari の回答を一般化しました。GitHubで完全なスクリプトを探してください。コンソールからのビルド マニュアルの手順は次のとおりです (x86 バージョン、MSVS の既定のパス)。

  1. コンソールでブーストを解凍し、ルートフォルダーに移動します
  2. MSDNによると:

    ::setup environment
    call "%ProgramFiles(x86)%\Microsoft Visual Studio 11.0\VC\bin\vcvars32.bat"
    
    ::setup paths
    set INCLUDE=%ProgramFiles(x86)%\Microsoft SDKs\Windows\7.1A\Include;%INCLUDE%
    set PATH=%ProgramFiles(x86)%\Microsoft SDKs\Windows\7.1A\Bin;%PATH%
    set LIB=%ProgramFiles(x86)%\Microsoft SDKs\Windows\7.1A\Lib;%LIB%
    
    ::cl and linker settings
    set CL=/D_USING_V110_SDK71_ %CL%
    set LINK=/SUBSYSTEM:CONSOLE,5.01 %LINK%
    
  3. 別のMSDNセットによると、Win XP 用に定義されています。MSDN には、WINVERorを定義できるものがあります_WIN32_WINNTが、念のため、両方を使用します。ここは慎重に^

    set XP_TOOLSET_DEFINES=define=WINVER=0x0501 define=_WIN32_WINNT=0x0501 ^
    define=NTDDI_VERSION=0x05010000 define=PSAPI_VERSION=1
    
  4. Build Boost ビルドシステム

    call bootstrap.bat
    
  5. b2およびプロジェクト パラメータを使用してBoost ライブラリをビルドします。たとえば、マルチスレッドの静的ライブラリをデバッグします。

    b2 toolset=msvc-11.0 %XP_TOOLSET_DEFINES% ^
    variant=debug link=static threading=multi runtime-link=shared 
    

重要な注意:

メイン プロジェクトでは、(v110_xp ツールセットの設定に加えて)WINVERまたは_WIN32_WINNT( #define.cpp または /D コンパイラ オプションで) も定義する必要があります。

于 2014-02-18T13:21:43.513 に答える
2

プラットフォーム ツールセット v110 で Boost をビルドし、プラットフォーム ツールセット v110_xp でビルドしたアプリケーションでこれらを使用できるようです。参照: vs2012 ツールセットの互換性

ただし、これはまだテストする必要があります。おそらく、他の誰かがこれについてより多くの経験を持っています。

于 2013-08-12T15:46:07.093 に答える
1

Visaul C++ プロジェクトでブースト ライブラリを使用している場合、v110_xp ツールセットでブーストを再コンパイルする必要はないと思います。ヘッダーを使用するときは、WINVER と _WIN32_WINNT が正しいバージョンに設定されていることを確認する必要があります。プロジェクトのコンパイル中にこれらのマクロを設定しない場合、BOOST (少なくとも 1.5​​7) はデフォルトで XP 互換モード (および特に SD​​K 7.1) を使用します。

これは、VS 2013 と v120_xp ツールセットにも当てはまります。多くの外部ライブラリを使用する v120_xp ツールセットを使用して VS 2013 から VC++ プロジェクトをコンパイルしたとき、その中でブーストすると、最初は実行可能ファイルが Win XP で実行されませんでした。いろいろ調べた結果、問題は新しくコンパイルされたブースト ライブラリ (msvc 12 を使用) ではなく、v120_xp ツールセットで再コンパイルする必要があった他の外部ライブラリであることがわかりました。msvc 12 でコンパイルされたブースト ライブラリは問題なく動作しました (自動リンク機能を使用しました)。

これは、XP互換モードを設定するブースト(1.56、ただし1.57でも同じ)のWindows構成ヘッダーへのリンクです

于 2015-10-27T15:10:38.767 に答える