[心得] 在Ultimate++ and Mingw使用boost

看板Programming作者 (xhfbxjcekfcxh )時間17年前 (2008/09/08 17:32), 編輯推噓0(001)
留言1則, 1人參與, 最新討論串1/1
這個搞了兩天的東西,總算搞定。 找遍各網頁論壇,拼湊出來方法,之前沒人寫完整的。 有錯請指正,謝謝。 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
你要.a的話,就把編出來的.o包起來就好了
09/11 10:53, 1F
文章代碼(AID): #18nF4h3l (Programming)