【问题标题】:Building Boost for 32-bit and 64-bit on Windows into the same folder将 Windows 上 32 位和 64 位的 Boost 构建到同一个文件夹中
【发布时间】:2017-06-11 07:30:33
【问题描述】:

我正在寻找一个简单的 config.jam 设置,它将使用 MSVC 在 Windows 上为 x86 和 x64 构建 Boost(1.60 或更高版本)。理想情况下使用对 b2 的单个调用——我知道它应该支持从单个调用生成多个输出。对 x86 和 x64 分别调用两次是可以的,但不是首选。

我想要的另一件事是将两组库输出到 same 文件夹中。显然,它们需要有不同的名称,所以我希望将 -x64 放在 x64 二进制文件的名称中。而且它仍然需要自动链接,所以我不能手动重命名它们,它必须是构建系统支持的东西。这部分是必不可少的。

我有read,b2 提供了一个--buildid 参数,并且自动链接支持BOOST_LIB_BUILDID 定义,它允许插入这样的自定义关键字,但我不确定如何使用它们。是否可以在 config.jam 中指定两个构建,一个带有 buildid,一个不带 buildid(并通过一次调用 b2 来运行它们),还是真的需要两个单独的调用?

有谁知道神奇的词吗?

【问题讨论】:

    标签: c++ windows boost boost-build


    【解决方案1】:

    我想那不是人们会做的事。

    我已经决定只运行两次命令;作为记录,我的工作咒语是这样的:

    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 文件夹的内容。然后在构建软件时,将这个 sn-p 添加到项目文件中(通过 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 版本进行编译,不过。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-18
      • 1970-01-01
      • 1970-01-01
      • 2011-09-02
      • 2016-04-17
      • 1970-01-01
      • 1970-01-01
      • 2015-11-01
      相关资源
      最近更新 更多