昨天花了一天時間,終於把OpenMesh在我的虛擬機上Ubuntu10.04上編譯成功了,其實整個過程還是很簡單的,不過Cmake出現的一個錯誤折騰了我很久,最後終於解決,所以想在這裏把整個過程記錄下來,以備他人蔘考:)
首先介紹以下OpenMesh,這是一個開源的跨平臺Mesh數據結構的類庫,由RWTH開發。(別告訴我你不知道什麼叫Mesh),由於大量使用C++模板技術,使得OpenMesh具有很高的性能以及良好的擴展性,具體的介紹參見OpenMesh的主頁:http://www.openmesh.org/
現在來說在Ubuntu下如何編譯OpenMesh:第一步,下載OpenMesh的源代碼,在主頁上Download標籤可以找到下載的地址,我下載的是最新的OpenMesh 2.0-RC5版本。(如果想要最新的開發版本,可以使用SVN下載,網頁上提供了SVN服務器的地址)下載後解壓到某個文件夾,比如/home/jixu/OpenMesh/OpenMesh-2.0-RC5/。
第二步,其實OpenMesh本身並不依賴於其他的庫,可是要編譯他的例子程序就需要其他的幾個庫:QT,OpenGL,GLUT, GLEW。Ubuntu安裝這幾個庫非常簡單,只需要使用軟件包管理就很容易的安裝了。這幾個軟件包分別是:libgl1-mesa-dev
, libglu1-mesa-dev
, freeglut3-dev
, qt4-dev-tools
, libglew1.5-dev
。使用apt-get安裝即可。(這些庫對應的dbg我也安裝了,不知道以後有沒有用)。
第三步,使用CMake安裝,首先要確保你的機器安裝了cmake。(如果沒有安裝,就apt-get install cmake
)新建一個目錄(比如我的是usr/share/openmesh),進入這個目錄執行 cmake <openmesh解壓的目錄>
(我的是cmake /home/jixu/OpenMesh/OpenMesh-2.0-RC5/)。這時cmake開始生成所需的makefile,可是一秒鐘之後屏幕顯示配置沒完成,我看了看error的信息,大概意思說在配置GLUT時找不到兩個關鍵的變量,於是我就看看是不是glut沒有安裝成功,可是寫了個opengl的測試程序證明glut是安裝了的,然後google了半天也沒啥效果,在cmake的maillist中找到了個.cmake文件(設置那兩個變量的)加到cmake子目錄下,錯誤依舊。。。由於不懂CMake的機制所以在那些.cmake文件中看來看去,(這裏省略兩千字),最後發現ms不是什麼GLUT的問題,是有另外兩個庫沒有安裝的原因,於是安裝libxi-dev
,libxmu-dev
,再執行cmake,成功!最後執行make編譯,過了3分鐘左右吧,新建目錄下的Build子目錄就是編譯好的庫了。趕緊運行了Build/bin下的QtViewer,可以顯示我的模型,很帥!
最後說一下,如果要是自己寫程序調用OpenMesh的話,需要指定頭文件路徑和共享庫的路徑(我是使用共享庫的,靜態庫整個庫都在一起,很大不推薦),我爲了方便,將/Build/lib/OpenMesh目錄下的libOpenMeshCore.so.2.0和libOpenMeshCore.so拷貝到了/usr/local/lib目錄下(因爲gcc在鏈接時會自動找這個目錄),最後執行一下/sbin/ldconfig -v
更新一下。這時就可以自己編譯了,比如,進入OpenMesh源代碼的教程目錄(我的是/home/jixu/OpenMesh/OpenMesh-2.0-RC5/src/OpenMesh/Example/),然後進入Tutorial01子目錄,執行g++ -I../../../ cube.cc
,如果沒有錯誤會生成a.out,接着執行a.out
,生成了output.off,說明我們編譯成功了。
ps:由於第一次寫博客,估計會很混亂,不過我要堅持下去,並且爭取越寫越好,因爲今天看到了一句話很有道理:好記性不如爛博客:)
ps2: 文中橙色的部分是需要安裝的軟件包或者是需要執行的命令。