Posted on 2018-06-03 20:53
eryar 閱讀(2669)
評(píng)論(0) 編輯 收藏 引用 所屬分類:
6.Others
編譯QCAD
eryar@163.com
目前開(kāi)源的二維CAD有QCAD、LibreCAD等,且LibreCAD可以說(shuō)是QCAD的分支版本。對(duì)比這款開(kāi)源軟件,發(fā)現(xiàn)QCAD的功能與操作習(xí)慣和AutoCAD更接近。LibreCAD是純C++開(kāi)發(fā),而QCAD使用了Qt的Script模塊,使用了C++和Javascript腳本兩種開(kāi)發(fā)方式。我覺(jué)得使用腳本來(lái)擴(kuò)展功能比純C++開(kāi)發(fā)效率會(huì)高點(diǎn),因?yàn)檫@些開(kāi)源項(xiàng)目源碼都很大,編譯比較花時(shí)間。如果使用腳本來(lái)開(kāi)發(fā)的話,沒(méi)有編譯時(shí)間,可以邊寫腳本邊測(cè)試,很方便。
下面兩個(gè)分別是LibreCAD和QCAD中顯示圖形屬性的界面,可以看到QCAD感覺(jué)更好。

Figure 1. LibreCAD Main GUI

Figure 2. QCAD Main GUI
QCAD的編譯很簡(jiǎn)單,從 https://github.com/qcad/qcad 下載源碼后,就可以直接編譯了。其依賴的相關(guān)第三方庫(kù)都已經(jīng)包含在源碼中。下面就以在Windows操作系統(tǒng)中使用VS2008來(lái)編譯QCAD-3.20.1.2為例來(lái)說(shuō)明其編譯需要注意的問(wèn)題??紤]到Qt4相關(guān)的dll文件較少,所以選擇Qt4.8.6和Visual Studio2008來(lái)編譯QCAD。
在VS中使用Qt可以使用QtVSAddin,安裝好QtVSAddin后會(huì)在VS的菜單上出現(xiàn)一個(gè)Qt菜單:

Figure 3. QtVSAddin Menu in VS2008
從Qt插件的菜單中的Open Qt Project File來(lái)打開(kāi)qcad源碼文件中的qcad.pro,會(huì)生成qcad.sln的VS解決方案文件,并在VS2008打開(kāi)了解決方案。

Figure 4. QCad source code in VS2008
編譯到RScriptHandlerEcma.cpp文件時(shí),遇到幾個(gè)QPrinterInfo靜態(tài)函數(shù)的問(wèn)題,因?yàn)閝cad-3.20.1.2中推薦使用Qt5.5.1,而這幾個(gè)靜態(tài)函數(shù)是從Qt5.3版本才引入的。所以找到Qt5.3中相關(guān)的源碼,把關(guān)于QPrinterInfo的幾個(gè)靜態(tài)函數(shù)在這里重寫。從字面上看這幾個(gè)函數(shù)是與打印相關(guān)的,如果不使用打印相關(guān)功能,可以直接把這幾個(gè)錯(cuò)誤注釋掉。
因?yàn)閝cad與界面相關(guān)的功能都是用JavaScript腳本實(shí)現(xiàn),所以還需要編譯Qt的腳本實(shí)現(xiàn)。找到源碼的src目錄中的3rdparty文件夾中與Qt版本對(duì)應(yīng)的qt-labs-qtscriptgenerator,里面會(huì)已經(jīng)生成了VS的解決方案。直接用VS打開(kāi)解決方案,全部編譯即可。



Figure 5.編譯qt script
編譯成功后,文件都會(huì)生成在指定的目錄中,直接打開(kāi)源碼下面的debug文件中的qcad.exe即可以運(yùn)行QCAD了。

Figure 6. 運(yùn)行編譯的QCAD
為了方便大家在移動(dòng)端也能看到我的博文和討論交流,現(xiàn)已注冊(cè)微信公眾號(hào),歡迎大家掃描下方二維碼關(guān)注。
