【问题标题】:How to install Boost libraries with CodeBlocks?如何使用 CodeBlocks 安装 Boost 库?
【发布时间】:2014-12-15 17:29:47
【问题描述】:

所以我快到了我的行尾了;我一直在研究保存文件和序列化,只是发现 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 以获取更多诊断信息。

嗯 - 嗯,没有任何类型的 .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!

【问题讨论】:

  • 您使用的是什么工具集(编译器)?
  • 对不起!如果我没记错的话,我正在使用 MinGW,但老实说,我还没有学到很多关于编程技术方面的知识,所以我可能会误解这一点。

标签: c++ boost codeblocks


【解决方案1】:

根据您发布的错误消息,我假设您使用的是某个版本的 Visual Studio。为了从命令行使用它的编译器,您需要定义一些环境变量。如果您使用 Visual Studio 命令提示符,这将自动为您完成。更好的是,您可能想尝试关注this tutorial

【讨论】:

    【解决方案2】:

    我尝试关注http://forums.codeblocks.org/index.php?topic=15164.0,效果非常好。

    加速安装:

    下载 boost 的 zip 或 7zip 包。将内容提取到extract_dir。

    打开命令提示符 (cmd.exe) 并导航到 extract_dir。 cd extract_dir

    如果 minGW\bin 文件夹(可以在 CodeBlocks installatoin 文件夹中找到)不在路径变量中,请添加它。

    路径 minGW_dir\bin;%path%

    通过输入构建boost构建系统

    bootstrap.exe mingw

    在记事本中打开文件extract_dir\project-config.jam 并将单词msvc 更改为gcc。

    返回命令提示符窗口,运行

    b2.exe

    使用代码块设置提升

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

    【讨论】:

    • 对我来说 bootstrap.exe 是 bootstrap.bat,在看到无法识别 mingw 的日志后,我不得不将 mingw 更改为 gcc。
    【解决方案3】:

    这是一篇博客文章,介绍如何在 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 类型库后,进入 Project > Build Options 并通过 Search Directories 设置附加包含,选择 Linker 选项卡并设置库文件的位置,然后在 Linker Settings 选项卡中添加必要的库名称(s )(例如 boost_filesystem-mgw48-mt-d-1_56),应该就是这样。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-03-16
      • 2014-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-20
      相关资源
      最近更新 更多