1. 程式人生 > >clucene2.3.3.4編譯詳解

clucene2.3.3.4編譯詳解

最近總是有人給我留言,說Clucene編譯不過去,大概是因為我以前發的一篇筆記的影響吧

這不,今天又有人問了,所以抽點時間,寫一下我編譯的過程,希望能幫助大家。

一、首先在sourceforge上下載clucene-core-2.3.3.4 ,在目前這是最新版本的

二、安裝boost庫

boost庫安裝還是有點麻煩的,首先在在boost官網下載boost,解壓後,記得一定要解壓在C盤,比如我放在C:\boost\boost_1_47_0目錄下,在編譯程式碼的時候系統首先在系統目錄下找boost庫,這樣可以省去一些錯誤,比如我在寫程式的時候發現我的VS2008不能解析以雙引號包含的boost標頭檔案,而必須是尖括號包住的,如

#include <boost/regex.hpp>就能編譯過去,而#include “boost/regex.hpp”就編譯不過去,把我的程式放到boost安裝在其它盤的電腦上時,也會出現編譯錯誤。

在解壓完成之後,boost的大部分庫就可以使用了,只有個別的庫需要編譯成動態連結庫才能使用,boost庫使用bjam程式編譯,當然我也對這個很有特色的工具一知半解,不過其跟cmake一樣,都是跟著GNU make的思想來簡單化我們對大型程式編譯的問題。

在boost庫隨帶的文件裡可以找到準確的編譯過程,不過在Clucene2.3.3.4中好像只用到了智慧指標,而使用智慧指標是不需要編譯成動態連結庫的,因此編譯過程可以省略,不過我在我機子上測試的boost庫是編譯過去的版本,大家先嚐試下面的過程,若提示錯誤,則嘗試使用如下方法編譯boost,再嘗試重新編譯Clucene2.3.3.4

1>雙擊bootstrap.bat生成b2.exe和bjam.exe檔案,將這個目錄新增到環境變數裡面。

2>用記事本開啟Jamroot檔案可以看到b2有很多選項,發現有link=static|shared這個選項,我們使用link=shared就行了,表示將所有庫生成動態連結庫,將命令列切換到C:\boost\boost_1_47_0目錄下輸入

b2 link=shared

直接回車,不出什麼問題的話應該會編譯到預設目錄C:\boost\boost_1_47_0\stage\lib下,時間估計會有點長,慢慢等。

三、

cmake安裝沒什麼說的,我安裝在了C:\Program Files\CMake 2.8目錄下。

四、將clucene-core-2.3.3.4解壓,我解壓到了F盤,即在F:\clucene-core-2.3.3.4資料夾下存放它所有的檔案。

、修改Cmake的一處錯誤,也就是我在以前的筆記中提到的,開啟C:/Program Files/CMake 2.8/share/cmake-2.8/Modules/FindBoost.cmake,到390行處,做如下修改

五、下載zlib,必須放到C盤,即系統目錄下,在F:\clucene-core-2.3.3.4\src\ext資料夾下放有zlib的原始碼,要是拷貝過來,不能使用到去的盤裡面去下載CSDN下載最後我的zlib就在C:\zlib資料夾內。

六、現在準備工作都做完了,我們開始編譯,開啟C:\Program Files\CMake 2.8\bin\cmake-gui.exe,選擇Clucene的目錄,和其編譯後生成檔案的路徑,最好單獨放在不同資料夾下,這個cmake生成的東西有點亂

直接點選下面的configure,選擇visual studio 9 2008,我嘗試過vc6,但是沒有編譯過去,MinGW也試過,也沒有編譯過去,然後若沒有錯誤的話,後面generate一下就OK了,若出現zlib找不到,指定一下就可以了,按照下面這張圖,先選advance再指定

到此,我們就生成了一個關於vs2008的工程,它就在我們指定的clucene_bin目錄下,進入目錄,點選clucene.sln執行vs2008,在解決方案裡我們發現Clucene的所有東西都出來了,但是這個時候可執行程式還沒有編譯出來,在解決方案裡右擊生成clucene-core還有clucene-shared就可以了,如果你細心的話,發現目錄下面還有好多demo哦,如果你在vs2008裡面沒有配置boost庫,及zlib庫的路徑時會提示錯誤,在

工具----選項----專案解決方案----vc++----右邊下拉選單中的包含檔案(標頭檔案)及庫檔案(lib庫)分別指定路徑,一切OK了

最後將我編譯過去的檔案連同原始碼一塊發上來,供大家下載下載

祝你使用愉快,如果有什麼問題請在下面回覆,大家一起交流

我編譯中碰到的問題:

我下載boost後,configure時還報找不到boost,不是第五條的原因,新版cmake已經改正了該問題,我通過下邊批處理解決了該問題。

set BOOST_BUILD_PATH=C:\boost\boost_1_49_0\tools\build\v2
set BOOST_PATH=C:\boost
set BOOST_ROOT=C:\boost\boost_1_49_0