作者kekeo (xhfbxjcekfcxh )
看板Programming
标题[心得] 在Ultimate++ and Mingw使用boost
时间Mon Sep 8 17:32:26 2008
这个搞了两天的东西,总算搞定。
找遍各网页论坛,拼凑出来方法,之前没人写完整的。
有错请指正,谢谢。
Building and Installing Boost.Regex:
[CodeGear C++ builder]
之前有在CodeGear C++ builder下使用,
解压缩source file在C:\boost_1_36_0,直接到
C:\boost_1_36_0\libs\regex\build目录下make -fbcb5.mak、
复制*.lib到CCB lib目录、设定include就解决了。
[Ultimate++]
Ultimate++是使用MinGw,complier 是gcc。
但他gcc的makefile应该是写给Unix-like system的,
在Windows下有些指令会失效,
所以不能直接make -fgcc.mak(Ubuntu 可以),
必须使用他的bjam。
<1>把 Bjam 执行档解压缩到C:\boost_1_36_0目录之後执行
一行解决:
bjam "-sMINGW_ROOT_DIRECTORY=C:\upp\mingw\bin" "-sTOOLS=mingw" --toolset=gcc
--prefix=C:\Boost --without-python install
执行完後编译的lib档和include档会被安装到C:\Boost\目录下,
include算是多复制的,原source file也有。
<2>复制libary
复制C:\Boost\lib\*.lib至C:\upp\mingw\lib,可以只复制有用到的就行了。
理论上,只要放进upp\mingw\lib目录下就可以使用了,
但是linking时却发生undefined reference to boost::basic_regex的情况,
主要就是卡在这一步。在upp\mingw\lib目录中主要是*.a *.o的档案
,我建出来却是*.lib的档案(在Ubuntu是*.a),不知有没有关系。
以下步骤再解决这问题。
Project->package organizer ->右键->New libraries->
GCC : C:\upp\mingw\lib\libboost_regex-mgw43-mt.lib
*.lib用到的每个都要加!!!
<3>设定include
Setup->Build methods->INCLUDE directories->右键->Append row->C:\boost_1_36_0
最後一个设定你解压缩source file有head的目录,我是在C:\boost_1_36_0,
或是要设为C:\Boost\include\boost-1_36也可以
(我是复制完C:\Boost\lib就砍掉C:\Boost了)。
include使用时像这样#include <boost/regex.hpp>,
在linux上大同小异不重复了。
有兴趣的一起研究吧。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.220.96.229
※ 编辑: kekeo 来自: 61.220.96.229 (09/08 17:34)
※ 编辑: kekeo 来自: 61.220.96.229 (09/08 17:36)
1F:→ ewn:你要.a的话,就把编出来的.o包起来就好了 125.225.3.13 09/11 10:53