如何在CodeBlocks中安装Boost库?

11

我已经到了最后的边缘,我正在研究文件保存和序列化,但是得知C++没有像Python的精彩的pickle一样本地序列化能力。但幸运的是,它有Boost - 所以我开始了安装Boost 1.47的任务,以便能够序列化我的对象。

然而,到目前为止,还没有成功。我最初想使用这个:http://wiki.codeblocks.org/index.php?title=BoostWindowsQuickRef ,但是我不断收到版本不匹配的错误,尝试多次寻找与1.47兼容的Boost Jam(我只找到了1.3.19,似乎是为1.46构建的),我发现该页面已经过时了一年半。

然后,在进行了大量搜索后,我被指向了这里:http://www.boost.org/doc/libs/1_47_0/doc/html/bbv2/installation.html 。但是这也行不通。当运行\bootstrap.bat时,我遇到了以下错误:

无法构建Boost.Build引擎。 请查阅bootstrap.log了解更多诊断信息。

哦?嗯,没有任何日志文件,但有一个名为bootstrap的文本文件,其中包含以下内容:

Setting environment for using Microsoft Visual Studio 2010 x86 tools.
###
### Using 'vc10' toolset.
###

c:\Program Files (x86)\CodeBlocks\MinGW\downloaded\boost_1_47_0\tools\build\v2\engine>if exist bootstrap rd /S /Q bootstrap 

c:\Program Files (x86)\CodeBlocks\MinGW\downloaded\boost_1_47_0\tools\build\v2\engine>md bootstrap 

c:\Program Files (x86)\CodeBlocks\MinGW\downloaded\boost_1_47_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 debug.c execnt.c expand.c filent.c glob.c hash.c hdrmacro.c headers.c jam.c jambase.c jamgram.c lists.c make.c make1.c newstr.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
debug.c
execnt.c
execnt.c(29) : fatal error C1083: Cannot open include file: 'windows.h': No such file or directory
expand.c
filent.c
glob.c
hash.c
hdrmacro.c
headers.c
jam.c
jam.c(581) : fatal error C1083: Cannot open include file: 'windows.h': No such file or directory
jambase.c
jamgram.c
lists.c
make.c
make1.c
newstr.c
option.c
output.c
parse.c
Generating Code...
Compiling...
pathunix.c
pathunix.c(275) : fatal error C1083: Cannot open include file: 'windows.h': No such file or directory
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
w32_getreg.c(18) : fatal error C1083: Cannot open include file: 'windows.h': No such file or directory
native.c
set.c
path.c
regex.c
Generating Code...
Compiling...
property-set.c
sequence.c
order.c
Generating Code...

现在,我真的很困惑。对于所有这些,我已经超出了我的能力范围 - 我仍然只是编写侧向卷轴游戏,并且只有几个月的C++能力。我不知道我做错了什么。有人能指导我一个清晰、完整的一步一步指南之类的东西吗?我只想将Boost安装到我的系统上!


你使用什么工具集(编译器)? - Benjamin Lindley
抱歉!如果我没记错的话,我正在使用MinGW,但老实说,我对编程的更多技术细节还没有学习到,所以可能会有误解。 - GarrickW
3个回答

3

从您发布的错误信息来看,我假设您正在使用某个版本的Visual Studio。为了从命令行中使用其编译器,您需要定义一些环境变量。如果您使用Visual Studio命令提示符,则会自动为您完成此操作。更好的方法是,您可以尝试遵循这个教程


1
我尝试遵循http://forums.codeblocks.org/index.php?topic=15164.0中的指示,结果非常好。
BOOST安装:
下载boost的zip或7zip包。将内容提取到extract_dir。
打开命令提示符(cmd.exe)并导航到extract_dir。 cd extract_dir 如果minGW \ bin文件夹(可以在CodeBlocks安装文件夹中找到)不在路径变量中,则添加它。 path minGW_dir \ bin;%path%
通过输入以下内容构建boost构建系统
bootstrap.exe mingw
在Notepad中打开extract_dir \ project-config.jam文件,并将单词msvc更改为gcc。
回到命令提示符窗口,运行

b2.exe

使用CodeBlocks设置Boost

创建名为boost的全局变量,以extract_dir为基础。(在我的计算机上,这是C:\Libraries\boost_1_47_0。) 其他字段不需要任何内容(除非您在构建boost时使用了自定义目录,请在此处输入路径)。 接下来(假设您正在启动一个项目,而不是添加到现有项目中),创建一个新项目(控制台应用程序应该可以)。 在此项目中,打开“项目”->“构建选项...”,确保在左侧列中选择了项目的整体名称(例如,boost_test)。切换到“搜索目录”选项卡,然后单击“添加”(对于编译器选项卡)。在框中,键入$(#boost),然后单击“确定”。


对我来说,bootstrap.exe 实际上是 bootstrap.bat,而且在日志中发现 mingw 无法识别后,我不得不将其更改为 gcc。 - Mister Mystère

0
这里有一篇博客文章,涉及如何在Windows环境下配置Code::Blocks使用Boost库(仅限头文件和编译):

http://www.technical-recipes.com/2014/configuring-codeblocks-to-use-the-boost-libraries/

不要忘记,对于需要额外编译的Boost库,您需要通过Boost根目录运行boostrap.bat和b2.exe命令:

bootstrap.bat mingw b2.exe

这将默认将库放置在stage\lib目录中。一旦生成了所有mingw类型的库,请进入项目>构建选项,并通过搜索目录设置附加包含,选择链接器选项卡并设置库文件的位置,在链接器设置选项卡中添加必要的库名称(例如boost_filesystem-mgw48-mt-d-1_56),然后就完成了。


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