boost 编译

boost 编译

Boost历史版本下载地址

http://sourceforge.net/project/showfiles.php?group_id=7586&package_id=8041

 

bat文件,boost 1.33.1 Python 2.2.1,可能需要重新安装stl port, stl port版本有问题 

::如果不要编译bjam.exe的话
rem GOTO install

cd C:\boost_1_33_1\tools\build\jam_src
pause
call build.bat
pause
copy C:\boost_1_33_1\tools\build\jam_src\bin.ntx86\bjam.exe C:\boost_1_33_1
pause

:install

rem SET INCLUDE=\"C:\\STLport-4.6.2\\stlport\";%INCLUDE%
rem SET LIB=\"C:\\STLport-4.6.2\\lib\";%LIB%
SET MSVC_ROOT="C:\Program Files\Microsoft Visual Studio\VC98"
SET VISUALC="C:\Program Files\Microsoft Visual Studio\VC98"
SET JAM_TOOLSET=VISUALC
SET PYTHON_ROOT=C:\Python22
SET PYTHON_VERSION=2.2
SET STLPORT_PATH=C:\STLport-4.6.2\lib
SET STLPORT_VERSION=4.6.2
cd c:\Program Files\Microsoft Visual Studio\VC98\bin
pause

call VCVARS32.BAT
pause

cd C:\boost_1_33_1
pause

::stage代表 lib
::msvc-stlport是msvc-stlport-tools.jam文件,可以搜索得到
::--with-thread是只编译thread库,--without-thread则相反
::比如编译thread 的lib库如下行.
rem bjam -sBOOST_ROOT=. -sTOOLS=msvc --with-thread stage

::编译所有
bjam -sBOOST_ROOT=. -sTOOLS=msvc-stlport install
bjam -sBOOST_ROOT=. -sTOOLS=msvc install

::编译regex
rem bjam -sBOOST_ROOT=. -sTOOLS=msvc-stlport --with-regex install
rem bjam -sBOOST_ROOT=. -sTOOLS=msvc --with-regex install

::编译thread
rem bjam -sBOOST_ROOT=. -sTOOLS=msvc-stlport --with-thread install
rem bjam -sBOOST_ROOT=. -sTOOLS=msvc --with-thread install

pause
exit

 

 

 

1、下载python-2.5.2.msi安装到C:\Python25

http://www.python.org/ftp/python/2.5.2/python-2.5.2.msi

2、下载boost_1_35_0,解压到C:\boost_1_35_0

http://sourceforge.net/project/downloading.php?group_id=7586&use_mirror=nchc&filename=boost_1_35_0.zip&48604828

3、执行C:\boost_1_35_0\tools\jam\build_dist.bat

4、生成了bjam.exe在:C:\boost_1_35_0\tools\jam\src\bin.ntx86\bjam.exe

5、拷贝bjam.exe到C:\boost_1_35_0

6、打开cmd,执行:cd C:\boost_1_35_0

7、执行bjam --toolset=msvc -sPYTHON_ROOT="{C:\Python25}" install

bjam --toolset=msvc-6.0 stdlib=stlport -sPYTHON_ROOT="{C:\Python25}" install

等待半个小时左右

8、将C:\boost_1_35_0\libs文件夹(里面是源代码,lib_source),拷贝到C:\Boost,并更改名为boost_src,这样就成了C:\Boost\boost_src

9、把C:\Boost\include\boost-1_35_0\boost,加入到VC6的Include路径,hpp也是C++的头文件啊!Boost库就是用的这个。

10、将C:\Boost\include\boost-1_35_0\boost和C:\Boost\boost_src,加入到VC6的source路径

11、把C:\Boost\lib,加入到VC6的LIB路径

12、C:\boost_1_35_0这个文件夹可以删除了,如果不想删除,那么C:\boost_1_35_0\bin.v2这个是编译时候的obj等文件,可以删除掉。

运行出现的错误

1、预定义头要加入:,D_STLP_DEBUG,__STL_DEBUG

2、ZM limit 错误:工程->设置->C/C++选项卡下面有“工程选项”的一个命令区在命令行的末尾加上/Zm1000,改为/Zm2000也行,是整百的都可以

3、“compiler   is   out   of   heap   space”,\ZM改成2000(最大了)

4、“Fatal   Error   C1063”,这个错误是编译器栈溢出,可能是你的程序单个源文件太大了,拆分成小一些的文件试试  
      MSDN上:  
      Fatal   Error   C1063  
     compiler   limit   :   compiler   stack   overflow  
      The   program   was   too   complex,   possibly   due   to   recursive   include   files.   Split   the   code   into   smaller   source   files   and   recompile.

手动编译boost::regex

1、cmd;

2、cd C:\boost_1_35_0\libs\regex\build

3、vcvars32.bat

4、SET STLPORT_PATH=C:\STLport\lib(如果需要以STLPort编译的话)

5、nmake -f vc6-stlport.mak(STLPort编译)或者 nmake -f vc6.mak(普通编译)

用来测试的代码,建立一个Win32 Console Application:

#include "stdafx.h"
#include <iostream>
#include <boost/regex.hpp>
#include <boost/thread.hpp>
int main()

    // 3 digits, a word, any character, 2 digits or "N/A", 
    // a space, then the first word again
    boost::regex reg("\\d{3}([a-zA-Z]+).(\\d{2}|N/A)\\s\\1");   
    std::string correct="123Hello N/A Hello"; 
    std::string incorrect="123Hello 12 hello";   
    assert(boost::regex_match(correct,reg)==true); 
    assert(boost::regex_match(incorrect,reg)==false);
    boost::regex reg1("(new)|(delete)");
    boost::smatch m;std::string s=  "Calls to new must be followed by delete. \  Calling simply new results in a leak!";
    if (boost::regex_search(s,m,reg1))
    {  // Did new match? 
        if (m[1].matched)   
            std::cout << "The expression (new) matched!\n"; 
        if (m[2].matched)   
            std::cout << "The expression (delete) matched!\n";
    }
    return 0;
}

如果一切顺利通过,恭喜你,boost安装成功。

vc6 上安装stlport和boost库

用户头像

1
vc 6   sp5补丁  预处理补丁
python2.2.3
stlport4.5.3
boost1.3.0.2
2
使用stlport的iostream,boost.python编译失败
如果禁用stlportt的iostream,boost.regex编译失败
选择boost1.3.0.2的原因:

http://engineering.meta-comm.com/boost.aspx
得知Boost-wide regression reports
vc6基本支持boost1.3.0.2 的全部库
而boost以后的版本,vc6 的表现可以说是惨不忍睹。
boost1.3.0.2支持 python2.2 stlport 4.5.3
基本就是这个样子了。

你可能感兴趣的:(boost 编译)