[英]Building Boost for 32-bit and 64-bit on Windows into the same folder
我正在尋找一個簡單的config.jam設置,它將使用MSVC在Windows上為x86和x64構建Boost(1.60或更高版本)。 理想情況下使用單次調用b2 - 我知道它應該支持從單個調用生成多個輸出。 對x86和x64進行兩次單獨調用是可以的,但不是首選。
我想要的另一件事是讓它將兩組庫輸出到同一個文件夾中。 顯然,他們需要有不同的名稱,所以我希望它將-x64
放在x64二進制文件名稱的某處。 它仍然需要自動鏈接,所以我不能手動重命名它們,它必須是構建系統支持的東西。 這部分是必不可少的。
我已經讀過 b2提供了--buildid
參數,自動鏈接支持BOOST_LIB_BUILDID
定義,允許插入這樣的自定義關鍵字,但我不確定如何使用它們。 是否可以在config.jam中指定兩個構建,一個具有buildid而另一個沒有(並且通過一次調用b2來運行它們),或者這確實需要兩個單獨的調用嗎?
有誰知道這些神奇的話語?
我猜那不是人們所做的事情。
我已經決定只運行兩次命令; 為了記錄我的工作咒語是這樣的:
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
這將x86和x64庫都放入stage\\lib
; 對於實際編譯應用程序,只需要此文件夾和boost
文件夾的內容。 然后在構建軟件時,將此片段添加到項目文件中(通過props文件):
<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中編譯具有Boost類型的DLL,它有助於提高兼容性。但是,您仍然需要確保它們都使用相同的編譯器和Boost版本進行編譯。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.