我知道新的工具集尚未得到Boost的支持,但是无论如何我都想尝试构建Boost。我天真地尝试使用Boost Build System和选项toolset=msvc-12.0-ctp
,但它不起作用。我相信这是可能的,因为Boost 1.55正式支持Visual Studio 2013(MSVC-122.0),并且两个版本之间只有很少的破坏变化。
我的动机是我需要CTP的某些功能,因此我自己的应用程序将与MSVC编译器的CTP版本一起编译。恐怕只需与原始的2013年编译器一起编译Boost,将在Boost和我自己的应用程序之间造成二进制不兼容。Stephen T. Lavavej本人不能保证二进制兼容性:
- 在MSVC 2013年11月11月为2013年11月的MSVC建立的Boost Binaries的任何机会
因为这是仅编译器的,因此您可能可以摆脱混合和匹配。我不建议这样做。
关于如何解决这个问题的想法?预先感谢。
在谷歌搜索和尝试之后,最后,我做到了。因此,算法是:
-
查看Subversion的最新提升(可能可以使用发行版来完成,但我没有尝试过)
svn co http://svn.boost.org/svn/boost/trunk boost-trunk
-
指定位于
%BOOST_HOME%/tools/build/v2/
中的user-config.jam
文件中的编译器的自定义路径(其中%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.0VCvcvarsall.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>...
-
在Process Manager或ProcessExplorer中检查
b2
是否调用CTP编译器,并且不发布一个 -
不幸的是,并非所有库都可以构建正常。有一些编译错误。
另请参见:
- 这个答案
- Boost-Build文档的这一页
希望它有帮助。快乐的建筑!=)