﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-编程自动化-随笔分类-boost</title><link>http://www.cppblog.com/AutomateProgram/category/8928.html</link><description>当音乐和传说在深夜中沉寂后，程序的每个字符还在跳动！</description><language>zh-cn</language><lastBuildDate>Fri, 13 Aug 2010 12:29:04 GMT</lastBuildDate><pubDate>Fri, 13 Aug 2010 12:29:04 GMT</pubDate><ttl>60</ttl><item><title>VC6.0下配置boost库使用正则表达式</title><link>http://www.cppblog.com/AutomateProgram/archive/2010/08/07/122496.html</link><dc:creator>漂漂</dc:creator><author>漂漂</author><pubDate>Fri, 06 Aug 2010 17:54:00 GMT</pubDate><guid>http://www.cppblog.com/AutomateProgram/archive/2010/08/07/122496.html</guid><wfw:comment>http://www.cppblog.com/AutomateProgram/comments/122496.html</wfw:comment><comments>http://www.cppblog.com/AutomateProgram/archive/2010/08/07/122496.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/AutomateProgram/comments/commentRss/122496.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/AutomateProgram/services/trackbacks/122496.html</trackback:ping><description><![CDATA[<p>原文地址：<a href="http://fly3118.blog.51cto.com/361030/84447">http://fly3118.blog.51cto.com/361030/84447<br></a><br>最近做开发碰到了长字符串匹配、搜索的问题，最先想到的是使用正则表达式，简单、高效。但是我用的开发工具是VC6.0，不支持正则表达式。上网baidu一下，发现支持正则的库还真不少，大概有以下几种：boost，GNU，VC7带的ATL中的和微软发布的greta。网上的朋友对boost评价不错，决定就使用是它了！ </p>
<div><font color=#ff0033></font>&nbsp;</div>
<div><font color=#ff0033>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1、</font>接下来的就是下载boost库，网上很好找。我下载的是压缩包，40多M。下载地址:(<u><font color=#800080><a href="http://nchc.dl.sourceforge.net/sourceforge/boost/boost_1_35_0.zip">http://nchc.dl.sourceforge.net/sourceforge/boost/boost_1_35_0.zip</a></font></u>)。我解压的目录是D:\boost</div>
<div><font color=#ff0033>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2、</font>然后是编译，我只要支持正则表达式就可以，因此只需要编译D:\boost\libs\regex\build目录下的文件。据说全部编译要花将近2个小时，没有验证过，在我家里的机器上编译正则表达式部分只用了不到5分钟。</div>
<div>&nbsp;</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 以下是我的操作：</div>
<div>&nbsp;</div>
<div class=quote>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1、在&#8220;运行&#8221;里输入&#8220;<font color=#f70938>cmd</font>&#8221;，打开命令提示符；<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2、输入命令&#8220;<font color=#ff0033>cd D:\boost\libs\regex\build</font>&#8221;//设置当前目录<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3、输入命令&#8220;<font color=#ff0033>D：</font>&#8221;//转到当前目录<br><font color=#1a1ae6></font></div>
<div class=quote><font color=#1a1ae6>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4、接下来是很关键的一步：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 很多文章是这样说的&#8220;输入 nmake -fvc6.mak&#8221;，但是出现了&#8220;'nmake' 不是内部或外部命令，也不是可运行的程序或批处理文件。&#8221;的错误提示。然后你就会拼命查找原因，结果又有文章上说是环境变量没配置好，然后给出一堆&#8220;set&#8221;。也有的文章说是运行一下visual studio安装目录下的VC98\Bin\VCVARS32.BAT文件就OK了。你按照文章作者的方法做的，结果发现问题依旧！<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 以上说法都是正确的，但是说得都不是很完整，出现错误提示的根本原因就是环境变量没配置好，不识别nmake命令，配置过jdk的朋友就很容易明白。如果按照作者的要求搞一堆&#8220;set&#8221;，未免大题小作了吧，因为我们只需要用一次'nmake' 就可以解决问题了。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VCVARS32.BAT正是配置环境变量的批处理文件，但是配置的参数只在当前窗口有效，也就是说当你双击运行后窗口关闭，环境变量已经没有了。<br></font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 于是我用了以下方法：把VCVARS32.BAT文件用鼠标拖到打开的cmd窗口（<font color=#ff0033>"D:\Program Files\Microsoft Visual Studio\VC98\Bin\VCVARS32.BAT"</font>），然后回车。<br>输入命令&#8220;<font color=#ff0033>nmake -fvc6.mak</font>&#8221;等待几分钟，OK了！，D:\boost\libs\regex\build多了一个vc6的文件夹，里面是很多lib和dll文件。<br></div>
<div><font color=#ff0033>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5、</font>到此资源已经准备好了，下面要做的工作是配置VC6.0，使它编译使时候能找到正则库。把vc6下的所有lib和dll文件拷贝到Visual Studio安装目录下的VC98\boostRex（boostRex是我自己建的）然后打开vc6.0，选择&#8220;Tools-&gt;Options-&gt;Directories-&gt;Include files&#8221;，加入一行&#8220;D:\BOOST&#8221;选择&#8220;Tools-&gt;Options-&gt;Directories-&gt;Library file&#8221;，加入一行&#8220;<font color=#0909f7>C:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\</font>VC98\BOOSTREX&#8221;（彩色部分是我的Visual Studio安装目录）</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 好了，配置也OK了！下面进行测试。</div>
<div><font color=#ff0033></font>&nbsp;</div>
<div><font color=#ff0033>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6、</font>编写程序测试</div>
<div>&nbsp;</div>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><span style="COLOR: #008000">//</span><span style="COLOR: #008000">SDK下的测试：</span><span style="COLOR: #008000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">#include&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">stdafx.h</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">cstdlib</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">stdlib.h</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">boost</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">regex.hpp</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">iostream</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">using</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">namespace</span><span style="COLOR: #000000">&nbsp;std;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">using</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">namespace</span><span style="COLOR: #000000">&nbsp;boost;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">regex&nbsp;expression(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">^select&nbsp;([a-zA-Z]*)&nbsp;from&nbsp;([a-zA-Z]*)</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;argc,&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;argv[])&nbsp;<br><img id=Codehighlighter1_284_557_Open_Image onclick="this.style.display='none'; Codehighlighter1_284_557_Open_Text.style.display='none'; Codehighlighter1_284_557_Closed_Image.style.display='inline'; Codehighlighter1_284_557_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_284_557_Closed_Image onclick="this.style.display='none'; Codehighlighter1_284_557_Closed_Text.style.display='none'; Codehighlighter1_284_557_Open_Image.style.display='inline'; Codehighlighter1_284_557_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_284_557_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_284_557_Open_Text><span style="COLOR: #000000">{&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">std::</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">in</span><span style="COLOR: #000000">;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">cmatch&nbsp;what;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">cout&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">enter&nbsp;test&nbsp;string</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;endl;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">getline(cin,</span><span style="COLOR: #0000ff">in</span><span style="COLOR: #000000">);&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"></span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(regex_match(</span><span style="COLOR: #0000ff">in</span><span style="COLOR: #000000">.c_str(),&nbsp;what,&nbsp;expression))&nbsp;<br><img id=Codehighlighter1_421_500_Open_Image onclick="this.style.display='none'; Codehighlighter1_421_500_Open_Text.style.display='none'; Codehighlighter1_421_500_Closed_Image.style.display='inline'; Codehighlighter1_421_500_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_421_500_Closed_Image onclick="this.style.display='none'; Codehighlighter1_421_500_Closed_Text.style.display='none'; Codehighlighter1_421_500_Open_Image.style.display='inline'; Codehighlighter1_421_500_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif"></span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_421_500_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_421_500_Open_Text><span style="COLOR: #000000">{&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;i</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">what.size();i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">str&nbsp;:</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">what[i].str()</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">endl;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">}</span></span><span style="COLOR: #000000">&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"></span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000">&nbsp;<br><img id=Codehighlighter1_509_543_Open_Image onclick="this.style.display='none'; Codehighlighter1_509_543_Open_Text.style.display='none'; Codehighlighter1_509_543_Closed_Image.style.display='inline'; Codehighlighter1_509_543_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_509_543_Closed_Image onclick="this.style.display='none'; Codehighlighter1_509_543_Closed_Text.style.display='none'; Codehighlighter1_509_543_Open_Image.style.display='inline'; Codehighlighter1_509_543_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif"></span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_509_543_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_509_543_Open_Text><span style="COLOR: #000000">{&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;cout</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Error&nbsp;Input</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">endl;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">}</span></span><span style="COLOR: #000000">&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"></span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000">&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span></div>
输入: select name from table<br>输出: str:select name from table<br>　　　str:name<br>　　　str:table<br><br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><span style="COLOR: #008000">//</span><span style="COLOR: #008000">MFC下的测试（有几个地方要注意，下面有提示）：&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">新建一个对话框的MFC工程，加入头文件&nbsp;</span><span style="COLOR: #008000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">boost</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">regex.hpp</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">在按钮鼠标单击事件响应函数中加入&nbsp;</span><span style="COLOR: #008000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">boost::regex&nbsp;expression(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">^select&nbsp;([a-zA-Z]*)&nbsp;from&nbsp;([a-zA-Z]*)</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">CString&nbsp;</span><span style="COLOR: #0000ff">in</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">select&nbsp;gm&nbsp;from&nbsp;tab</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">CString&nbsp;sRet;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">boost::cmatch&nbsp;what;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(boost::regex_match(LPCSTR(</span><span style="COLOR: #0000ff">in</span><span style="COLOR: #000000">),&nbsp;what,&nbsp;expression))</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">CString转string&nbsp;</span><span style="COLOR: #008000"><br><img id=Codehighlighter1_311_432_Open_Image onclick="this.style.display='none'; Codehighlighter1_311_432_Open_Text.style.display='none'; Codehighlighter1_311_432_Closed_Image.style.display='inline'; Codehighlighter1_311_432_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_311_432_Closed_Image onclick="this.style.display='none'; Codehighlighter1_311_432_Closed_Text.style.display='none'; Codehighlighter1_311_432_Open_Image.style.display='inline'; Codehighlighter1_311_432_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_311_432_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_311_432_Open_Text><span style="COLOR: #000000">{&nbsp;<br><img id=Codehighlighter1_347_429_Open_Image onclick="this.style.display='none'; Codehighlighter1_347_429_Open_Text.style.display='none'; Codehighlighter1_347_429_Closed_Image.style.display='inline'; Codehighlighter1_347_429_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_347_429_Closed_Image onclick="this.style.display='none'; Codehighlighter1_347_429_Closed_Text.style.display='none'; Codehighlighter1_347_429_Open_Image.style.display='inline'; Codehighlighter1_347_429_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;i</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">what.size();i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_347_429_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_347_429_Open_Text><span style="COLOR: #000000">{&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;sRet&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;(what[i].str()).c_str();</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">string转CString&nbsp;</span><span style="COLOR: #008000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;MessageBox(sRet);&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000">&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000">&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000">&nbsp;<br><img id=Codehighlighter1_441_458_Open_Image onclick="this.style.display='none'; Codehighlighter1_441_458_Open_Text.style.display='none'; Codehighlighter1_441_458_Closed_Image.style.display='inline'; Codehighlighter1_441_458_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_441_458_Closed_Image onclick="this.style.display='none'; Codehighlighter1_441_458_Closed_Text.style.display='none'; Codehighlighter1_441_458_Open_Image.style.display='inline'; Codehighlighter1_441_458_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_441_458_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_441_458_Open_Text><span style="COLOR: #000000">{&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;MessageBox<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span></div>
<img src ="http://www.cppblog.com/AutomateProgram/aggbug/122496.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/AutomateProgram/" target="_blank">漂漂</a> 2010-08-07 01:54 <a href="http://www.cppblog.com/AutomateProgram/archive/2010/08/07/122496.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>boost1.35.0 VS2005 编译日志(转）</title><link>http://www.cppblog.com/AutomateProgram/archive/2008/11/23/67684.html</link><dc:creator>漂漂</dc:creator><author>漂漂</author><pubDate>Sun, 23 Nov 2008 12:49:00 GMT</pubDate><guid>http://www.cppblog.com/AutomateProgram/archive/2008/11/23/67684.html</guid><wfw:comment>http://www.cppblog.com/AutomateProgram/comments/67684.html</wfw:comment><comments>http://www.cppblog.com/AutomateProgram/archive/2008/11/23/67684.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/AutomateProgram/comments/commentRss/67684.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/AutomateProgram/services/trackbacks/67684.html</trackback:ping><description><![CDATA[原文地址：<a href="http://hi.baidu.com/silyt/blog/item/06ba99c8c05e4b127e3e6f2a.html">http://hi.baidu.com/silyt/blog/item/06ba99c8c05e4b127e3e6f2a.html</a><br><br>经历了将近半年多的时间boost终于发布了1.35.0版本（前版本1.34.1发布于2007/7），其编译方法和原来的编译方法基本上是一致的，主要改变包括1.34.0以来bjam的toolset所提供的参数名称的改变外，还包括bjam的编译默认选项的变化，在1.35.0之前的版本默认编译时会自动编译各种版本的库，包括静态库、动态库、debug库和release库等全部的版本，但是到了1.35.0时默认的选择仅仅编译release版本的库，这样一来在开发的时候就不能进行必要的调试了，为了能够使其编译全部的版本需要在bjam的命令行参数中添加一个--build-type=complete类型的参数来指明需要编译全部的版本，所需要编译同时为了使得regex库能够通过ICU库支持Unicode，在编译上需要有一些特殊的选择。我在Visual Studio 2005 Pro + SP1环境下编译了该库，为了避免走弯路所以将其编译的方法进行说明，以方便大家编译。<br>&nbsp;&nbsp;&nbsp; 由于boost是采用其自己的bjam工具通过命令行进行编译的，所以：
<p>如果在Windows下开启console窗口（<font color=#800080>单击&#8220;开始&#8221;按钮，单击&#8220;运行&#8221;，敲入&#8220;cmd&#8221;</font>），必须将Visual Studio中C++目录下的环境vcvarsall.bat配置脚本运行一遍，以设置好VC的编译器环境变量。</p>
<p>如果从vs2005的工具菜单进入命令提示窗口（<font color=#800080>单击&#8220;开始&#8221;按钮，指向&#8220;所有程序&#8221;，指向&#8220;Microsoft Visual Studio 2005&#8221;，指向&#8220;Visual Studio 工具&#8221;，然后单击&#8220;Visual Studio 2005 命令提示&#8221;</font>），则不需要运行Visual Studio中C++目录下的环境vcvarsall.bat配置脚本。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 具体编译步骤如下：</p>
<p>　　 <br>　　1.下载boost_1_35_0压缩文件，解压缩到d:\boost_1_35_0\目录下 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="http://sourceforge.net/project/showfiles.php?group_id=7586&amp;package_id=8041">http://sourceforge.net/project/showfiles.php?group_id=7586&amp;package_id=8041</a><br>　　 <br>　　2.编译bjam <br>　　从vs2005的工具菜单进入命令提示窗口（<font color=#800080>单击&#8220;开始&#8221;按钮，指向&#8220;所有程序&#8221;，指向&#8220;Microsoft Visual Studio 2005&#8221;，指向&#8220;Visual Studio 工具&#8221;，然后单击&#8220;Visual Studio 2005 命令提示&#8221;</font>），cd到d:\boost_1_35_0\tools\jam\src下执行build.bat，会在d:\boost_1_35_0\tools\jam\src\bin.ntx86\下生成bjam.exe，將bjam.exe复制到d:\boost_1_35_0\下。 <br>　　 <br>　　3.设定编译环境 　　 <br>　　修改user-config.jam (d:\boost_1_35_0\tools\build\v2\user-config.jam) 的MSVC configuration <br>　　# MSVC configuration <br>　　 <br>　　# Configure msvc (default version, searched in standard location <br>　　# and PATH). <br>　　# using msvc ; <br>　　using msvc : 8.0 : : &lt;compileflags&gt;/wd4819 &lt;compileflags&gt;/D_CRT_SECURE_NO_DEPRECATE &lt;compileflags&gt;/D_SCL_SECURE_NO_DEPRECATE &lt;compileflags&gt;/D_SECURE_SCL=0 ; <br>　　 <br>　　4.编译boost <br>　　將目录cd到d:\boost_1_35_0\下执行 </p>
<p>&nbsp;&nbsp;&nbsp; (1). 编译不带ICU支持的boost库<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 此种情况下的boost库编译起来比较的简单，在准备好的console窗口中输入：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bjam --without-python --toolset=msvc-8.0 --build-type=complete --prefix="d:\boost_1_35_0" stage<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 就可以了，如果要安装的话则输入：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bjam --without-python --toolset=msvc-8.0 --build-type=complete --prefix="d:\boost_1_35_0" install<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; (2). 编译具有ICU支持的boost库<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 首先我们必须编译ICU库才能够编译boost库，在准备好的console窗口中输入：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bjam -sICU_PATH=d:\ICU --without-python --toolset=msvc-8.0 --build-type=complete --prefix="d:\boost_1_35_0" stage<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 就可以了，如果要安装的话则输入：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bjam -sICU_PATH=d:\ICU --without-python --toolset=msvc-8.0 --build-type=complete --prefix="d:\boost_1_35_0" install</p>
<p>&nbsp;&nbsp;&nbsp; 通过上面的方法可以很正常完成boost各种需要版本的关系。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 参数说明: <br>　　--without-python 表示不使用 python <br>　　--toolset : 所使用compiler，Visual Studio 2005 为 msvc-8.0<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --build-type:编译类型，complete表示生成所有的版本（debug，release等）</p>
<p>　　--prefix：指定编译后library的的目录 <br>　　这一步要花比较长的时间（大约几十分钟，视机器配置而定）</p>
<p><br>　　5.设定vs2005环境 <br>　　Tools -&gt; Options -&gt; Projects and Solutions -&gt; VC++ Directories <br>　　在Library files加上d:\boost\lib <br>　　在Include files加上d:\boost\include\boost_1_35_0</p>
<p>注：以上的各个目录只是作为例子说明，实际安装过程中可以视自己的喜好进行修改。</p>
<img src ="http://www.cppblog.com/AutomateProgram/aggbug/67684.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/AutomateProgram/" target="_blank">漂漂</a> 2008-11-23 20:49 <a href="http://www.cppblog.com/AutomateProgram/archive/2008/11/23/67684.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>