【发布时间】:2011-01-20 07:18:28
【问题描述】:
是否有 VS2008 的 64 位 Boost 库版本? 还是我必须自己编译一个?如果,那么,有没有人有这方面的经验?
【问题讨论】:
标签: c++ visual-studio-2008 boost
是否有 VS2008 的 64 位 Boost 库版本? 还是我必须自己编译一个?如果,那么,有没有人有这方面的经验?
【问题讨论】:
标签: c++ visual-studio-2008 boost
作为一个简短的回答:
bjam --toolset=msvc-9.0 address-model=64 --build-type=complete
作为更长的答案,这是我在同一层次结构中拥有 VS .NET 2008 32 位和 64 位 boost 库的构建说明(我怀疑这是一个常见的用例):
构建 win32 二进制文件
bjam --toolset=msvc-9.0 --build-type=complete stage
创建目录lib\win32
构建 x64 二进制文件
bjam --toolset=msvc-9.0 address-model=64 --build-type=complete stage
创建目录lib\x64
【讨论】:
lib\x64\lib 结束时。
我的网站上有已构建的二进制文件: http://boost.teeks99.com
编辑 2013-05-13:我的构建现在可以直接从 sourceforge page 获得(从 1.53 开始)。
【讨论】:
UPDATE(19.09.2017):为 VS2017 添加了脚本行。请注意,Boost 支持以上某个版本的 VS2017 编译器。我用的是最新版本(1.65.1)。
我使用此脚本为 x64 和 x86 平台、lib 和 dll 构建提升,为 VS2017、VS2015 和 VS2013 调试和发布:
md stage\VS2017\x64
md stage\VS2015\x64
md stage\VS2013\x64
b2 --stagedir=./stage/VS2017/x64 address-model=64 --build-type=complete --toolset=msvc-14.1 --threading=multi --runtime-link=shared --variant=debug
b2 --stagedir=./stage/VS2017/x64 address-model=64 --build-type=complete --toolset=msvc-14.1 --threading=multi --runtime-link=shared --variant=release
b2 --stagedir=./stage/VS2015/x64 address-model=64 --build-type=complete --toolset=msvc-14.0 --threading=multi --runtime-link=shared --variant=debug
b2 --stagedir=./stage/VS2015/x64 address-model=64 --build-type=complete --toolset=msvc-14.0 --threading=multi --runtime-link=shared --variant=release
b2 --stagedir=./stage/VS2013/x64 address-model=64 --build-type=complete --toolset=msvc-12.0 --threading=multi --runtime-link=shared --variant=debug
b2 --stagedir=./stage/VS2013/x64 address-model=64 --build-type=complete --toolset=msvc-12.0 --threading=multi --runtime-link=shared --variant=release
md stage\VS2017\win32
md stage\VS2015\win32
md stage\VS2013\win32
b2 --stagedir=./stage/VS2017/win32 --build-type=complete --toolset=msvc-14.1 --threading=multi --runtime-link=shared --variant=debug
b2 --stagedir=./stage/VS2017/win32 --build-type=complete --toolset=msvc-14.1 --threading=multi --runtime-link=shared --variant=release
b2 --stagedir=./stage/VS2015/win32 --build-type=complete --toolset=msvc-14.0 --threading=multi --runtime-link=shared --variant=debug
b2 --stagedir=./stage/VS2015/win32 --build-type=complete --toolset=msvc-14.0 --threading=multi --runtime-link=shared --variant=release
b2 --stagedir=./stage/VS2013/win32 --build-type=complete --toolset=msvc-12.0 --threading=multi --runtime-link=shared --variant=debug
b2 --stagedir=./stage/VS2013/win32 --build-type=complete --toolset=msvc-12.0 --threading=multi --runtime-link=shared --variant=release
pause
您可以创建一个.bat 文件并运行它来构建您的 boost 二进制文件。
【讨论】:
此时,teeks99 提供的 64 位二进制文件(请参阅其他答案)似乎是唯一免费的 64 位二进制文件。有一段时间,BoostPro 还提供了 64 位二进制文件,但从 1.51 开始,它们似乎已经过时了。
所以,我们又回到了两个选项:teeks99 二进制文件,或者构建自己的。
我自己构建所需的大部分信息都在这里: https://stackoverflow.com/a/2655683/613288
唯一缺少的是如何让它与 Visual Studio 2010 Express 的免费版本一起工作。我在其他地方发现了缺失的部分,经过一些定制后,我用于构建 boost 1.49.0 二进制文件的最终配方是:
启动 Visual C++,然后从“工具”菜单启动 Visual Studio 命令提示符。
在控制台窗口中,执行以下操作:
"C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\setenv.cmd" /Release /x64
然后在boost目录下:
bootstrap.bat
b2 -a -sBZIP2_SOURCE="C:\bzip2-1.0.6" -sZLIB_SOURCE="C:\zlib-1.2.5" --toolset=msvc-10.0 architecture=x86 address-model=64 link=static --with-date_time --with-filesystem --with-serialization --with-test --with-thread --with-system --with-regex --with-iostreams stage
最后一个命令是为我碰巧需要的(只是一些静态链接的库)定制的。
【讨论】:
我制作了一个小脚本,为 VS2005 和 VS2008 编译它们:
md stage\lib\win32
md stage\lib\x64
REM Visual Studio 2005
bjam --toolset=msvc-8.0 --build-type=complete stage
move /Y stage\lib\* stage\lib\win32\
bjam --toolset=msvc-8.0 address-model=64 --build-type=complete stage
move /Y stage\lib\* stage\lib\x64\
REM Visual Studio 2008
bjam --toolset=msvc-9.0 --build-type=complete stage
move /Y stage\lib\* stage\lib\win32\
bjam --toolset=msvc-9.0 address-model=64 --build-type=complete stage
move /Y stage\lib\* stage\lib\x64\
【讨论】: