Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/135.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将Windows上32位和64位的Boost构建到同一文件夹中_C++_Windows_Boost_Boost Build - Fatal编程技术网

C++ 将Windows上32位和64位的Boost构建到同一文件夹中

C++ 将Windows上32位和64位的Boost构建到同一文件夹中,c++,windows,boost,boost-build,C++,Windows,Boost,Boost Build,我正在寻找config.jam的简单设置,它将使用MSVC在Windows上为x86和x64构建Boost(1.60或更高版本)。理想情况下使用对b2的单个调用——我知道它应该支持从单个调用生成多个输出。对x86和x64进行两次单独调用是可以的,但不是首选 我想做的另一件事是让它将两组库输出到相同的文件夹中。显然,它们需要有不同的名称,因此我希望它将-x64放在x64二进制文件的名称中。它仍然需要自动链接,所以我不能手动重命名它们,它必须是构建系统支持的。这一部分很重要 我知道b2提供了一个--

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

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

我知道b2提供了一个
--buildid
参数,并且自动链接支持一个define,它允许像这样插入一个自定义关键字,但是我不确定如何使用它们。是否可以在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文件):


路径\到\包括\推进\
路径\to\lib\
$(BoostIncludeDir);%(其他包括董事)
增强所有动态链接;%(预定义)
BOOST_LIB_BUILDID=x64;%(预定义)
$(BoostLibDir);%(附加图书馆目录)
BOOST\u ALL\u DYN\u LINK
在技术上是可选的,但是如果您正在编译导出的API中包含BOOST类型的DLL,它有助于提高兼容性。不过,您仍然需要确保它们都是使用相同的编译器和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>