我知道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二进制文件的任何机会
因为这只是编译器,所以你可以放弃混合和匹配。不过我不推荐它。
有关如何解决此问题的任何想法?提前谢谢。
答案 0 :(得分:4)
注意,我没有使用Visual Studio 2013 November CTP构建Boost,因此进一步的解释纯粹是理论上的。
经过一些谷歌搜索和尝试,最后,我做到了。所以,算法是:
从subversion中查看最新的Boost(可能是发布发行版,但我没试过)
svn co http://svn.boost.org/svn/boost/trunk boost-trunk
在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
文件
确保您在行的开头没有#
(即未注释)
运行VS2013 x86 Native Tools Command prompt
或手动运行cmd.exe
,然后通过调用"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" -x86
设置环境。如果需要,请将x86
更改为x64
。
将CTP编译器的路径添加到PATH
变量:
set PATH=C:/Program Files (x86)/Microsoft Visual C++ Compiler Nov 2013 CTP/bin;%PATH%
检查CTP编译器的路径是之前的路径发布一个:
echo %PATH%
转到%BOOST_HOME%
并运行b2 toolset=msvc-12.1 ...<other params go there>...
在流程管理器或ProcessExplorer中检查b2
是否调用CTP编译器,而不是释放一个
不幸的是,并非所有库都构建良好。有一些编译错误。
另见:
希望它有所帮助。快乐的建筑! =)