如何使用Visual Studio 2013 CTP 2013年11月构建Boost 1.55

时间:2014-01-21 19:47:55

标签: c++ boost build visual-studio-2013

我知道boost还没有支持新的工具集,但我还是试着用它来构建Boost。我天真地尝试使用Boost构建系统和选项toolset=msvc-12.0-ctp,但它不起作用。我很有信心,因为Boost 1.55正式支持Visual Studio 2013(msvc-12.0),并且两个版本之间只有很少的重大变化。

我的动机是我需要CTP的一些功能,所以我自己的应用程序将使用msvc编译器的CTP版本进行编译。我担心用原始的2013编译器编译Boost会导致Boost和我自己的应用程序之间的二进制不兼容。 Stephen T. Lavavej himself doesn't guarantee binary compatibility

  

- 在MSVC 2013年11月CTP中重用为MSVC 2013构建的Boost二进制文件的任何机会

     

因为这只是编译器,所以你可以放弃混合和匹配。不过我不推荐它。

有关如何解决此问题的任何想法?提前谢谢。

1 个答案:

答案 0 :(得分:4)

注意,我没有使用Visual Studio 2013 November CTP构建Boost,因此进一步的解释纯粹是理论上的。

经过一些谷歌搜索和尝试,最后,我做到了。所以,算法是:

  1. 从subversion中查看最新的Boost(可能是发布发行版,但我没试过)

    svn co  http://svn.boost.org/svn/boost/trunk boost-trunk 
    
  2. user-config.jam文件中指定编译器的自定义路径,该文件位于%BOOST_HOME%/tools/build/v2/(其中%BOOST_HOME%是您检出发行版的路径):

    • 添加如下行:

    using msvc : 12.1 : "C:/Program Files (x86)/Microsoft Visual C++ Compiler Nov 2013 CTP/bin/cl" ;

    • 您可以使用任意字符串代替12.1,只需在此处添加一些内容即可在以后区分您的工具集时调用b2

    • 不要忘记在冒号前后和分号前放置空格,并使用斜杠/或双反斜杠\\代替反斜杠\。请参阅user-config.jam文件

    • 的评论中的说明
    • 确保您在行的开头没有#(即未注释)

  3. 运行VS2013 x86 Native Tools Command prompt或手动运行cmd.exe,然后通过调用"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" -x86设置环境。如果需要,请将x86更改为x64

  4. 将CTP编译器的路径添加到PATH变量:

    set PATH=C:/Program Files (x86)/Microsoft Visual C++ Compiler Nov 2013 CTP/bin;%PATH%
    
  5. 检查CTP编译器的路径是之前的路径发布一个:

    echo %PATH%
    
  6. 转到%BOOST_HOME%并运行b2 toolset=msvc-12.1 ...<other params go there>...

  7. 在流程管理器或ProcessExplorer中检查b2是否调用CTP编译器,而不是释放一个

  8. 不幸的是,并非所有库都构建良好。有一些编译错误。

  9. 另见:

    希望它有所帮助。快乐的建筑! =)