使用VS2012 RC构建Boost

4
我刚刚下载了适用于Windows 8 64位的Visual Studio 2012 RC。我尝试编译boost库(版本1.51),但是在Visual Studio命令提示符中使用make时出现错误。我在帖子的末尾发布了bootstrap.log。我想知道在Windows 8 Release Candidate上构建boost的正确步骤是什么。
提前感谢您的回复。
###
### Using 'vc11' toolset.
###

C:\Users\XXX\Downloads\boost_1_51_0\boost_1_51_0\tools\build\v2\engine>if
exist bootstrap rd /S /Q bootstrap

C:\Users\XXX\Downloads\boost_1_51_0\boost_1_51_0\tools\build\v2\engine>md
bootstrap

C:\Users\XXX\Downloads\boost_1_51_0\boost_1_51_0\tools\build\v2\engine>cl
/nologo /RTC1 /Zi /MTd /Fobootstrap/ /Fdbootstrap/ -DNT -DYYDEBUG
-wd4996 kernel32.lib advapi32.lib user32.lib /Febootstrap\jam0
command.c compile.c constants.c debug.c execnt.c filent.c function.c
glob.c hash.c hdrmacro.c headers.c jam.c jambase.c jamgram.c lists.c
make.c make1.c object.c option.c output.c parse.c pathunix.c regexp.c
rules.c scan.c search.c subst.c timestamp.c variable.c modules.c
strings.c filesys.c builtins.c md5.c pwd.c class.c w32_getreg.c
native.c modules/set.c modules/path.c modules/regex.c
modules/property-set.c modules/sequence.c modules/order.c
command.c
compile.c
constants.c
debug.c
execnt.c
filent.c
function.c
glob.c
hash.c
hdrmacro.c
headers.c
jam.c
jambase.c
jamgram.c
lists.c
make.c
make1.c
object.c
option.c
output.c
Generazione del codice in corso...
Compilazione in corso...
parse.c
pathunix.c
regexp.c
rules.c
scan.c
search.c
subst.c
timestamp.c
variable.c
modules.c
strings.c
filesys.c
builtins.c
md5.c
pwd.c
class.c
w32_getreg.c
native.c
set.c
path.c
Generazione del codice in corso...
Compilazione in corso...
regex.c
property-set.c
sequence.c
order.c
Generazione del codice in corso...

C:\Users\XXX\Downloads\boost_1_51_0\boost_1_51_0\tools\build\v2\engine>.\bootstrap    \jam0
-f build.jam --toolset=vc11 "--toolset-root=C:\Program Files
(x86)\Microsoft Visual Studio 11.0\Common7\Tools\..\..\VC\ " clean
...found 1 target...
...updating 1 target...
...updated 1 target...

C:\Users\XXX\Downloads\boost_1_51_0\boost_1_51_0\tools\build\v2\engine>.\bootstrap\jam0
-f build.jam --toolset=vc11 "--toolset-root=C:\Program Files
(x86)\Microsoft Visual Studio 11.0\Common7\Tools\..\..\VC\ "
don't know how to make command.c
don't know how to make compile.c
don't know how to make constants.c
don't know how to make debug.c
don't know how to make function.c
don't know how to make glob.c
don't know how to make hash.c
don't know how to make hcache.c
don't know how to make headers.c
don't know how to make hdrmacro.c
don't know how to make jam.c
don't know how to make jambase.c
don't know how to make jamgram.c
don't know how to make lists.c
don't know how to make make.c
don't know how to make make1.c
don't know how to make mem.c
don't know how to make object.c
don't know how to make option.c
don't know how to make output.c
don't know how to make parse.c
don't know how to make regexp.c
don't know how to make rules.c
don't know how to make scan.c
don't know how to make search.c
don't know how to make subst.c
don't know how to make w32_getreg.c
don't know how to make timestamp.c
don't know how to make variable.c
don't know how to make modules.c
don't know how to make strings.c
don't know how to make filesys.c
don't know how to make builtins.c
don't know how to make pwd.c
don't know how to make class.c
don't know how to make native.c
don't know how to make md5.c
don't know how to make modules/set.c
don't know how to make modules/path.c
don't know how to make modules/regex.c
don't know how to make modules/property-set.c
don't know how to make modules/sequence.c
don't know how to make modules/order.c
don't know how to make execnt.c
don't know how to make filent.c
don't know how to make pathunix.c
...found 50 targets...
...updating 1 target...
...can't find 46 targets...
...can't make 2 targets...
[MKDIR] bin.ntx86_64
...skipped b2.exe for lack of command.c...
...skipped bjam.exe for lack of b2.exe...
...skipped 2 targets...
...updated 1 target...
4个回答

15

解决方法:

  1. 切换到 boost_1_51_0-x64\tools\build\v2 目录
  2. 执行 bootstrap.bat(不要从本地 x64 命令提示符中执行 - 双击即可)
  3. 将 b2.exe 复制回 boost_1_51_0-x64 目录
  4. 切换到 boost_1_51_0-x64 目录
  5. 执行 b2

我编写了一个名为 BlueGo 的工具,它会自动下载 Boost 1.51.0 并使用 VS2012 x64 构建它: http://vertexwahn.de/


编译成功。谢谢。 - Jepessen
该工具现在还支持Boost 1.52.0和Boost 1.53.0。 - Vertexwahn
@Vertexwahn,我试用了你的应用程序,它显示 Boost 已经成功安装,但是当我包含例如 #include <boost/asio.hpp> 时会出现错误,请问下一步该怎么做? - ddacot
@ddacot BlueGo不会为Visual Studio设置包含和库目录 - 您必须手动设置它们。可以通过属性->项目->C/C++->附加包含文件或通过像CMake这样的构建系统手动完成此操作(请参见:https://bitbucket.org/Vertexwahn/cmakedemos/src/dec91489b1f0dcb0770390cdee6363996849d41b/boostFilesystemTest/CMakeLists.txt?at=default)。之所以采用这种方式处理,是因为应该可以为不同的项目使用不同的boost版本。此外,并非每个开发人员都将boost定位在相同的目录中 - 如果您愿意,可以创建一个功能请求。 - Vertexwahn
我已经完成了这个,但仍然出现3个错误。http://s7.directupload.net/images/130523/v877ojgf.jpg - ddacot
@ddacot 属性->项目->链接器(常规)->附加库目录 - Vertexwahn

7

版本1.52 刚刚发布,现在已经支持Visual Studio 2012 (VC11)。如果您需要早期版本的Boost,您可以将项目所使用的工具集更改为VC10。


5

虽然不是答案,但你可以在这里下载使用VC11 RC构建的预编译Boost二进制文件(点击此处)。根据这个页面,似乎在VC11上构建Boost存在一些问题(请参见本主题讨论)。



网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接