[心得] 在Ultimate++ and Mingw使用boost
這個搞了兩天的東西,總算搞定。
找遍各網頁論壇,拼湊出來方法,之前沒人寫完整的。
有錯請指正,謝謝。
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)
→
09/11 10:53, , 1F
09/11 10:53, 1F