ڼС
梦回起点
做你害怕做的事,你会发现:不过如此
本站基于WordPress—主题by 设计窝
冀ICP备15003737号
梦回起点
Copyright © 2015-2024 All rights reserved.

Eclipse+MinGW环境下boost库的编译和使用

搞了一下午,终于搞定了,每一滴汗都是当初学习的时候脑袋进的水。这几天快傻了,所以找点轻松的事情做做,装点新东西,没事就喜欢干点没用的。

准备工作:

1已经安装好的MinGW和Eclipse(不用安装,下载下来解压就用)

2Eclipse的压缩包

3环境变量是配置好的,具体怎么做自己百度,这不是重点,是送分题

4保证c盘有500M空间(最好是有,没有也可以)

我要说三个问题:

第一个是Boost的安装,编译

第二个是Eclipse与MinGW的匹配

第三个是Eclipse中的编译选项的配置

Boost的安装,编译

首先我们到官网下载Boost的压缩包http://www.boost.org/,我用最新版boost 1.61.0

下载Boost

下载完就是下面的这个东西,解压,爱放到哪随你

Boost文件

解压出来就是这么个东西:

解压后的文件

然后我们需要这个文件(booststrap.bat):

booststrap.bat

运行这个东西之后,你的文件夹里就会多出来这两个文件:

编译后的结果

命令行下进入该文件夹,输入命令bjam "toolset=gcc" install

image

然后等ta完成,我的电脑用了10分钟不到,根据电脑配置不同,速度差距很大

到C盘根目录下面找到下面的文件夹

编译后的结果

注意啦!

1.将C:\Boost\include\boost-1_61下面的boost文件夹拷贝到MinWG安装目录下的include目录中

如我的是:

D:\program\G++\include

我就这么干了

include文件夹

2.将C:\Boost\include\boost-1_61\lib下面的所有文件拷贝到MinWG安装目录下的lib目录中

如我的是:

D:\program\G++\lib

我就这么干了(文件太多,截图放不下,意思到了就可以了)

lib文件夹

注意:如果你的C盘没有500M,那也无所谓,但你也得有500M无论在哪

运行bjam的时候命令改成下面:

bjam   toolset=gcc Duxing

然后到本目录(解压Boost的那个文件夹)下的Duxing(愿意叫什么你随意)文件夹下面找include和lib目录 明白?

Eclipse与MinGW的匹配

把我们的编辑器请出来:

eclipse

eclipse

打开,第一次打开需要设置工作空间(workspace),怎么叫你随意,我的英文很水。

eclipse创建工作目录

新建一个C++项目

eclipse新建项目

设置项目名称和编译器:

eclipse配置编译器

点左边这个小按钮,展开项目管理的小窗口

eclipse

Eclipse中的编译选项的配置

选择这个“Properties” 怎么翻译我也不知道

image

我们打开C/C++ Build-Settings-MinGW G++ Linker-Libraries

image

窗口别关,先看下面

我们一会儿要用到的是正则表达式的库  所以我们只加载正则表达式的库文件,其他类似,自己查资料

我们在D盘下面刚刚安装的lib下面找到正则表达式的库

image

这两个就是正则表达式的库了

image

注意啦!

打开我们刚刚留下的窗口分别加入库的查找路径和需要引入的库

注意

我们文件中的文件名是“libboost_regex-mgw48-mt-d-1_61.a”

但是这里填写的却是“boost_regex-mgw48-mt-d-1_61”

这里一定注意

image

然后我们点击ok

在我们的项目上点击右键 选择New  选择File

image

输入文件名main.cpp 点击Finish

image

尾声

输入下面的代码进行测试

#include <cstdlib>
#include <string>
#include <iostream>

#include "boost/regex.hpp"
/**
*代码版权归原作者所有,原作者请看《参考资料》,本人稍加修改删掉了没有用的include,对代码进行了排版,下面的图片中使用的是未经修改的,也可以编译通过
*感谢作者提供的代码和方法
*@author jiafu1115
*来源http://blog.csdn.net/jiafu1115/article/details/9134777
*整理:独行
*/
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(unsigned i=0; i < what.size() ;i++){
			cout<<"str :"<<what[i].str()<<endl;
		}
	else
	{
		cout<<"Error Input"<<endl;
	}
	cout <<"成功啦   哈哈哈" << endl;
	return 0;
}

image

编译

image

运行

image

结果出来了

image

很简单   但是有的时候某些简单的东西真的会让人头大。

总结一下我犯得错误:

1.因为没有认真看代码,直接复制过来网上的来测试,结果路径有一点不对,找了5分钟

2.当初学GCC编译选项的时候就已经知道了-l后面是不用加(lib)(库名)(.a) 中()中的部分的,也就是说只要(库名)(不带“()”)就可以了

3.eclipse不熟悉,盲目的使用了一个不熟悉的编辑器(IDE),因为系统中原来就是由MinGW的,所以这个不用安装,我心想Eclipse一个工具能有多复杂,谁知道就是这个编辑器,让我多花了将近一个小时的时间,如果只用cmd方式那么应该早就完成了

参考资料:

1.mingw环境下boost库的编译和使用 - - ITeye技术网

2.Eclipse+MinGW+Boost环境搭建成功

3.使用MinGW编译boost

2016-08-05
                         
  1. 博客不错,嘎嘎!

  2. 任务易

    博主你能把这些截图出来也真是够敬业啊

发表回复