2017-01-25 6 views
3

MSVCを使用してWindows上でx86とx64の両方でBoost(1.60以降)を構築するconfig.jamの簡単な設定を探しています。理想的には、b2への1回の呼び出しを使用しています - 私はそれが1回の呼び出しから複数の出力を生成することをサポートしていることを知っています。 x86とx64を別々に2回呼び出すのは大丈夫ですが、好まれません。Windows上の32ビットと64ビット用のBoostを同じフォルダに作成する

もう1つは、ライブラリの両方のセットをと同じフォルダに出力することです。明らかに異なる名前を付ける必要があるので、x64バイナリの名前のどこかに-x64を置いて欲しい。また、自動リンクが必要なので、手動で名前を変更するだけでは、ビルドシステムがサポートするものでなければなりません。この部分は不可欠です。

私はパラメータを提供しており、オートリンクはこのようなカスタムキーワードの挿入を許可するBOOST_LIB_BUILDID defineをサポートしていますが、正確な使用方法はわかりません。readです。 config.jamに2つのビルドを指定することは可能ですか?ビルドIDとビルドIDを持たないビルドを1つ(b2への単一の呼び出しで両方を実行します)か、実際には2つの別々の呼び出しが必要ですか?

誰でも魔法の言葉を知っていますか?

答えて

3

私はその後、それはただの人がやることではないと思います。

コマンドを2回実行するだけで解決しました。 ;これはstage\libにx86とx64の両方のライブラリを置く

bootstrap 
b2 -j8 --build-dir=build    toolset=msvc-14.0 variant=debug,release link=shared threading=multi runtime-link=shared     stage 
b2 -j8 --build-dir=build --buildid=x64 toolset=msvc-14.0 variant=debug,release link=shared threading=multi runtime-link=shared address-model=64 stage 

:レコードの私の作業呪文は、このでした実際にアプリケーションをコンパイルするには、このフォルダの内容とboostフォルダのみが必要です。 (小道具ファイルを経由して)このスニペットは、ファイルをプロジェクトに追加されたソフトウェアを構築する際に続いて:

<PropertyGroup> 
    <BoostIncludeDir>path\to\include\boost\</BoostIncludeDir> 
    <BoostLibDir>path\to\lib\</BoostLibDir> 
</PropertyGroup> 
<ItemDefinitionGroup> 
    <ClCompile> 
    <AdditionalIncludeDirectories>$(BoostIncludeDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> 
    <PreprocessorDefinitions>BOOST_ALL_DYN_LINK;%(PreprocessorDefinitions)</PreprocessorDefinitions> 
    <PreprocessorDefinitions Condition="'$(Platform)'=='x64'">BOOST_LIB_BUILDID=x64;%(PreprocessorDefinitions)</PreprocessorDefinitions> 
    </ClCompile> 
    <Link> 
     <AdditionalLibraryDirectories>$(BoostLibDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> 
    </Link> 
</ItemDefinitionGroup> 

BOOST_ALL_DYN_LINKは技術的には任意であるが、それはあなたが彼らのエクスポートAPIでブースト型を持つDLLをコンパイルしている場合は、互換性を向上させることができますしかし、あなたはまだそれらがすべて同じコンパイラとBoostバージョンでコンパイルされていることを確認する必要があります。

関連する問題