Eclipse+MinGW+Boost环境搭建成功

272 篇文章 1 订阅
 

Eclipse+MinGW+Boost环境搭建成功  

2012-08-25 23:12:10|  分类: C/C++ |字号 订阅

一、准备

1.MinGW和Eclipse环境

关于此环境的搭建可参见:http://vin-mail.blog.163.com/blog/static/37895280201272563632186/

这里重点说明一下,关于MinGW的系统环境变量值得注意一下,因为这个涉及到eclipse能不能找到Boost库的头文件,下文我将继续上文的环境变量进行配置,这里罗列出相关环境变量:(因为我的MinGW安装在D:\OpenSoftware\MinGW)

MINGW=D:\OpenSoftware\MinGW
MINGW_HOME=D:\OpenSoftware\MinGW
MINGW_VERSION=4.6.2
C_INCLUDE_PATH=%MINGW_HOME%\include;%MINGW_HOME%\lib\gcc\mingw32\%MINGW_VERSION%\include
CPLUS_INCLUDE_PATH=%MINGW_HOME%\include\;%MINGW_HOME%\lib\gcc\mingw32\%MINGW_VERSION%\include
PATH + =%MINGW_HOME%\bin;%MINGW_HOME%\libexec\gcc\mingw32\%MINGW_VERSION%
(这里用+=,你懂得,实际上是采用编辑方式追加到系统PATH变量中,其他用等号的表示新建变量)
LIBRARY_PATH=%MINGW_HOME%\lib;%MINGW_HOME%\lib\gcc\mingw32\%MINGW_VERSION%
 
 

2.下载Boost并解压到指定目录

官方网站为http://www.boost.org/,笔者使用的版本是1.51.0

源码下载后,解压到自己的某个目录,笔者这里是D:\OpenSoftware\Boost_1_50_0_MinGW

3.准备bjam.exe工具

接下来打开cmd.exe,进入"D:\OpenSoftware\Boost_1_50_0_MinGW\tools\build\v2\engine\"(有些是在engine\src下有个build.bat)下,使用命令"build mingw",会在此目录下生成文件bin.ntx86\bjam.exe,将bjam.exe拷贝到boost源文件的根目录下,我这里即是:D:\OpenSoftware\Boost_1_50_0_MinGW

生成bjam.exe好像没出问题:(有意请参考附录一,这段可略过,仅供参考)

 
   

二、编译

cmd进入D:\OpenSoftware\Boost_1_50_0_MinGW目录,运行命令:bjam --build-type=complete toolset=gcc stage

我也只能说这个过程很长.....慢慢编译吧,据说有40~60minutes........我呢个汗,足足编译了两个半小时,900+M的库文件,或许是我的电脑太慢了吧!!!

 编译结果:

1.头文件:我的头文件还是在D:\OpenSoftware\Boost_1_50_0_MinGW\boost文件夹里

2.库文件:所有的库文件都在D:\OpenSoftware\Boost_1_50_0_MinGW\stage\lib

 

三、配置

系统环境变量:

BOOST_ROOT=D:\OpenSoftware\Boost_1_50_0_MinGW

BOOST_LIB=%BOOST_ROOT%\stage\lib

C_INCLUDE_PATH+=%BOOST_LIB%

CPLUS_INCLUDE_PATH+=%BOOST_LIB%LIBRARY_PATH+=%BOOST_LIB%

PATH +=%BOOST_LIB%

(这里用+=,你懂得,实际上是采用编辑方式追加到系统原有变量中,其他用等号的表示新建变量)

四、测试

(可以参见上一篇文章“创建HelloACE工程并配置ACE环境”

http://vin-mail.blog.163.com/blog/static/37895280201272563632186/)

1.启动eclipse

2.创建HelloBOOST工程并配置ACE环境:

启动eclipse.exe后,File->New->C++ Project
Project Name:HelloBOOST
Project Type:Executable->Hello wold Project
Tool Chains:MinGW GCC

在 libraries (-l) 中 写入 boost_regex-mgw46-d-1_51(说明 它就是 libboost_regex-mgw46-d-1_51.a 去掉 lib 和.a)

* 有时需要加入 wsock32 如 使用 ACE_SOCK_Dgram 时在 library search path(-L) 中 写入"D:\OpenSoftware\boost_1_51_0_MinGW\stage\lib"

完成配置。

将工程下main所在的cpp文件修改为一下测试程序:(我也是网上找的^_^)

#include <cstdlib> #include <stdlib.h> #include "boost/regex.hpp" #include <string> #include <iostream> using namespace std; using namespace boost;

regex expression("^select ([a-zA-Z]*) from ([a-zA-Z]*)");

int main(int argc, char* argv[]) {  std::string in;  cmatch what;  cout<<"enter test string"<< endl;  //getline(cin,in);  in = "select name from table";  if(regex_match(in.c_str(), what, expression))  {   for(int i=0;i<what.size();i++)     cout<<"str :"<<what[i].str()<<endl;  }  else  {   cout<<"Error Input"<<endl;  }  return 0; }

很明显,这是一个正则表达式的例子,呵呵,下面看下结果吧:
enter test string
str :select name from table
str :name
str :table
可能会出现一些编译连接问题,首要解决方案是正确配置头文件搜索路径和Lib文件搜索路径,
目前有个问题就是每个工程用到的lib都需要单独添加,希望以后我能找到更好的办法,方法是:
看头文件有什么关键字
比如我这里是:regex
然后知道我们用了关于正则表达式处理的库,去库文件搜一下:libboost_regex-mgw46-d-1_51.a
当然会有很多被搜出来,我刚好选了这个而已,不知道还有什么解决方案?

 

 附录一:bjam.exe工具生成日志

D:\OpenSoftware\boost_1_51_0_MinGW\tools\build\v2\engine>if exist bootstrap rd / S /Q bootstrap

D:\OpenSoftware\boost_1_51_0_MinGW\tools\build\v2\engine>md bootstrap

D:\OpenSoftware\boost_1_51_0_MinGW\tools\build\v2\engine>gcc -DNT -o bootstrap\j am0.exe command.c compile.c constants.c debug.c execnt.c filent.c function.c gl ob.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 p wd.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

D:\OpenSoftware\boost_1_51_0_MinGW\tools\build\v2\engine>.\bootstrap\jam0 -f bui ld.jam --toolset=mingw "--toolset-root= " clean ...found 1 target... ...updating 1 target... ...updated 1 target...

D:\OpenSoftware\boost_1_51_0_MinGW\tools\build\v2\engine>.\bootstrap\jam0 -f bui ld.jam --toolset=mingw "--toolset-root= " ...found 50 targets... ...updating 3 targets... [MKDIR] bin.ntx86 [COMPILE] bin.ntx86\b2.exe [COPY] bin.ntx86\bjam.exe ...updated 3 targets...

 

附录二:参考文档

下面贴出我参考的文章:

来源:http://www.cppblog.com/xinus/archive/2011/03/01/build_boost_using_mingw.html

标题:MinGW编译Boost库

 

一、Boost Boost库是一个可移植、提供源代码的C++库,作为标准库的后备,是C++标准化进程的发动机之一。其官方网站为http://www.boost.org/,目前最新版本为1.46.0,以下以此版本为准。 Boost库大部分的子库都是C++模版提供,大部分情况下直接包含头文件就可以了。其中部分子库需要编译,如下图所示: 使用MinGW编译Boost - Gavin Tung - 文文博客 上图中bjam.exeboost提供的编译工具,下面会介绍如何获得。

Windows 下面使用 Boost ,可以下载编译好的二进制安装包,下载网址是: http://www.boostpro.com ,不过目前上面提供1.44版的安装包下载,而且使用VC编译的。本文介绍如何使用Mingw编译Boost。

二、Mingw: Minimalist GNU for Windows 官方网站:http://www.mingw.org/ 部分同学可能和我一样,使用自带Mingw环境的IDE,比如Code::Blocks,其官方网站:http://www.codeblocks.org/。请确保Mingw工具链目录添加到系统的环境变量PATH中,比如我路径为:"D:\Program Files\CodeBlocks\MinGW\bin",并将这个目录下的mingw32-make.exe复制并重命名为make.exe。然后验证gcc等能否正常使用:开始->运行->输入"cmd"回车->命令窗口输出"gcc -v"查看gcc版本信息,如果看到如下类似输出,那么就可以继续正是编译Boost了。 使用MinGW编译Boost - Gavin Tung - 文文博客 三、bjam.exe bjamboost自带的工具,用来方便地编译boost,当然也可以用来编译你自己的工程。bjamboost源码中一起提供,需要编译才能使用,下载boost的时候会提示下载一个编译好的bjam,我不是很推荐,因为我用下载来的bjam编译boost的时候,出现一些错误,而用自己编译的bjam却顺利完成。 "E:\_Libs_\boost_1_46_0\tools\build\v2\engine\src"下,使用命令"build mingw",会在此目录下生成文件bin.ntx86\bjam.exe,将bjam.exe拷贝到boost源文件的根目录下,如"E:\_Libs_\boost_1_46_0\"。在这个目录下的"./Jamroot"文件,详细描述了bjam的用法,建议用文本打开这个文件并阅读前面部分的注释。 四、分享 bjam --build-type=complete toolset=gcc stage 上面的命令将编译所有需要编译的子库(除python)的各种版本,编译时间稍长,约40分钟~1小时。生成的文件在./stage/lib目录下。 不同版本可以通过名称来区别,例如date_time库一共生成有16个相关文件: libboost_date_time-mgw44-1_46.a libboost_date_time-mgw44-1_46.dll libboost_date_time-mgw44-1_46.dll.a libboost_date_time-mgw44-d-1_46.a libboost_date_time-mgw44-d-1_46.dll libboost_date_time-mgw44-d-1_46.dll.a libboost_date_time-mgw44-mt-1_46.a libboost_date_time-mgw44-mt-1_46.dll libboost_date_time-mgw44-mt-1_46.dll.a libboost_date_time-mgw44-mt-d-1_46.a libboost_date_time-mgw44-mt-d-1_46.dll libboost_date_time-mgw44-mt-d-1_46.dll.a libboost_date_time-mgw44-mt-s-1_46.a libboost_date_time-mgw44-mt-sd-1_46.a libboost_date_time-mgw44-s-1_46.a libboost_date_time-mgw44-sd-1_46.a 如上,mgw44代表编译器Mingw4.4版本: mt: threading=multi s: runtime-link=static d: variant=debug .dll: link=shared

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值