簡體   English   中英

在Windows上將32位和64位Boost構建到同一文件夾中

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM