我的CGAL配置環境為:windows8.1+vs2013+qt4.8.6+cmake2.8
CGAL是非常強大的演算法幾何庫,它是基於boost庫編寫的,因此需要要首先配置boost。為了完成計算機輔助幾何的專案需要用到很多幾何演算法(網格劃分、幾何建模等),所以需要配置安裝CGAL,個人感覺這是我遇到過最複雜的軟體配置。中間出了很多型別的錯誤,還好最後終於成功了,現分享經驗如下:
工具/原料
CGAL
cmake
Qt
boost
VS2013
一、安裝cmake
這一步比較簡單,下載安裝最新版本cmake-2.8,開始如下安裝
注意這裡選擇第二個選項,為所有的使用者新增系統變數
選擇安裝到目錄 F:\CMake 2.8,個人建議最好安裝在C盤目錄下。
安裝完畢後確認一下系統變數中有沒有紅色框中的目錄,若沒有需要手動新增進去。
cmake安裝完畢!
二、安裝Boost庫
下載最新版本,當前為boost_1_55_0
按 Win+R組合鍵輸入cmd進入命令視窗:
切換當前目錄為boost的安裝目錄(G:\boost_1_55_0),輸入bootstrap.bat
執行完上述命令後會在安裝目錄下生成如下exe檔案
繼續在DOS視窗中輸入bjam.exe,程式會根據你當前安裝的編譯環境(vs2010,vs2012,vs2013)等自動選擇與之相適應的庫檔案和包含檔案等。
此過程大概需要20分鐘左右。根據下面第二個圖片可以算出我的編譯環境為MSVC-12.0即VS2013.
20分鐘左右後可以看到如下介面,說明Boost庫配置完成
三、安裝CGAL
下載CGAL,這裡我下載的是CGAL-4.4這個版本(當前最新的)
安裝位數選擇32位
如果選擇64位進行安裝,則會在以後配置完畢後出現類似“無法識別的外部符號。。。”等問題,很難進行正確配置。所以這裡最好全部選擇32位進行安裝。
安裝目錄我選擇C:\Program Files\CGAL-4.4
安裝在其他目錄時可能會出現用Cmake編譯時出現好幾外錯誤。可以嘗試通過安裝在C盤進行解決。
選擇如下幾項,單擊下一步
安裝完成後可能會出現如下提示,則需要手動新增F:\CGAL-4.4\auxiliary\gmp\lib到Path變數中
此時CGAL安裝完成
四、用Cmake配置CGAL庫
開啟Cmake軟體選擇如下目錄,注:兩個目錄是相同的
單擊“config"-選擇如下編譯器(預設是32位,與前面安裝軟體一定要保持一致)
單擊確定後,出現如下介面說明配置成功
找到如下圖的這一項,選中,再次單擊"config"進行配置
單擊Generate,此時介面應如下。
此時在CGAL安裝目錄下出現如下檔案:CGAL.sln
開啟此檔案,此時編譯器會自動組建一個解決方案。如下圖
選擇32位debug模式,按F7進行編譯,編譯完成後如下圖所示,表明CGAL至此完全配置成功。
五、舉例測試CGAL
新建一個控制檯應用程式,並新增如下程式碼
#include
#include
#include
#include
#include
#include
int main(int argc, char **argv)
{
QApplication app(argc, argv);
QGraphicsScene scene;
scene.setSceneRect(0,0, 100, 100);
scene.addRect(QRectF(0,0, 100, 100), QPen(QColor(255,0,0)));
scene.addLine(QLineF(0,0, 100, 100));
scene.addLine(QLineF(0,100, 100, 0));
QGraphicsView* view = new QGraphicsView(&scene);
CGAL::Qt::GraphicsViewNavigation navigation;
view->installEventFilter(&navigation);
view->viewport()->installEventFilter(&navigation);
view->setRenderHint(QPainter::Antialiasing);
view->show();
return app.exec();
}
新增包含庫目錄,操作如下圖,注意紅色框中的新增內容
新增附加庫目錄,操作如下圖,注意紅色框中的新增內容
直接編譯執行此時會出現如下錯誤,別急,我們離成功只差一步了
>test.obj : error LNK2019: 無法解析的外部符號 "__declspec(dllimport) public: __thiscall QColor::QColor(int,int,int,int)" ([email protected]@[email protected]@Z),該符號在函式 _main 中被引用
1>test.obj : error LNK2019: 無法解析的外部符號 "__declspec(dllimport) public: __thiscall QBrush::QBrush(void)" ([email protected]@[email protected]),該符號在函式 _main 中被引用
1>test.obj : error LNK2019: 無法解析的外部符號 "__declspec(dllimport) public: __thiscall QBrush::~QBrush(void)" ([email protected]@[email protected]),該符號在函式 _main 中被引用
1>test.obj : error LNK2019: 無法解析的外部符號 "__declspec(dllimport) public: void __thiscall QWidget::show(void)" ([email protected]@@QAEXXZ),該符號在函式 _main 中被引用
1>test.obj : error LNK2001: 無法解析的外部符號 "protected: virtual bool __thiscall QWidget::winEvent(struct tagMSG *,long *)" ([email protected]@@[email protected]@[email protected])
1>test.obj : error LNK2001: 無法解析的外部符號 "protected: virtual void __thiscall QWidget::windowActivationChange(bool)" ([email protected]@@[email protected])
1>G:\Cpp\Midaxis\CGAL512\Debug\CGAL512.exe : fatal error LNK1120: 81 個無法解析的外部命令
新增附加依賴項。
選擇“連結器”---“輸入”,在其中輸入如下新增LIB檔案
phonon4.libQAxContainer.libQtCLucene4.libQtCore4.libQtDeclarative4.libQtDesigner4.libQtGui4.libqtmain.libQtOpenGL4.lib
再次編譯執行,即可大功告成了!
執行結果如下圖所示。
注意事項
配置過程中一定要細心,且勿少了某個步驟,否則會出現意想不到的錯誤
本人花了三天兩晚完成了上述配置。如果覺得對你有用,請點個贊哦!