ctkPluginFramework編譯qt5.12_vs2017_gcc4.8
前言
使用ctkPluginFramework作為插件系統架構的确有着衆多開發上的優勢。最近收到一些站内信,大家都想使用ctkPluginFramework但是不知道如何編譯,這篇教程就來講一講:另外在文章末尾我會附上ctkPluginFramework編譯好的庫,包括完整的頭檔案,lib,dll,和使用庫寫的例子,使用到了ctk事件訂閱分發機制傳輸資料,友善讀者下載下傳。
1. ctkPluginFramework插件系統在Windows下的編譯過程,使用qt5.12_vs2017
這裡使用使用qt5.12下面的 msvc2017_64
準備條件:
1. 安裝Git,我們通過它來下載下傳CTK的源碼。
2. 安裝CMake,我們用它來生成vs下的sln解決方案檔案。
相關站點:
1. CTK的官網:http://www.commontk.org/index.php/Main_Page
2. CTK源碼下載下傳位址:https://github.com/commontk/CTK
3. Git下載下傳位址:https://git-scm.com/
4. CMake下載下傳位址:https://cmake.org/
注意:這裡git必須安裝,應為在使用CMake編譯源碼的時候,需要用到ctkData,如果沒有編譯會報錯,是以編譯時需要聯網,
當然也可以自己手動下載下傳ctkData,放到源碼對應的目錄,在CMakeLists.txt配置檔案中,把ctkData對應的選項修改成對應的目錄。手動從https://github.com/commontk/CTKData上下載下傳CTKData,然後将CTKData放到一個固定的位置(例如放到CTK-master目錄中),并在CTK-master\CMakeExternals\CTKData.cmake中指定它的位置。設定完路徑後繼續configure。
編譯步驟:
注意:下面目錄中出現的檔案,由于是我已經編譯過的,是以可能會和剛下載下傳的多出很多檔案,在這裡僅說明流程是怎樣的。
1. Git下載下傳源碼包。Git下載下傳位址:https://github.com/commontk/CTK.git 。
如上圖,打開cmake工具,選擇剛下載下傳的CTK目錄,它會自動根據CMakeList.txt檔案加載子項目,如下圖所示;
出現第一個error,根據出現的error我們添加qt5的路徑,繼續configure:
選擇ctkPluginFramework子產品,點選Generate, Configure;完成後,檢視是否生成sln檔案,注意:此處一定要勾選上圖中标注的CTK_ENABLE_PluginFramework,不然編譯生成的sln檔案也無法生成最終的CTKPluginFramework.dll檔案;
若果還有問題:
我在用cmake編譯是報錯:
CMake Error at CMake/ctkMacroSetupQt.cmake:87(message):
error: Qt4 was not found on your system. You probably need to set the
QT_QMAKE_EXECUTABLE variable
有人說要修改CMake/ctkMacroSetupQt.cmake,将
set_property(CACHE CTK_QT_VERSION PROPERTY STRINGS 4 5)改成set_property(CACHE CTK_QT_VERSION PROPERTY STRINGS 5 4)
以及
set(CTK_QT_VERSION “4” CACHE STRING “Expected Qt version”)改為set(CTK_QT_VERSION “5” CACHE STRING “Expected Qt version”)
我修改之後還是報錯,我谷歌後找到了不修改ctkMacroSetupQt的方法,具體如下:
(1).點選Add Entry
(2).添加
CTK_QT_VERSION (to 5)
CMAKE_PREFIX_PATH (with the path to the cmake folder in Qt)
(3).點選主界面的Generate即可
如果還有問題,如果不修改,在進行config讀取配置的時候會出現如下圖所示的提示資訊。出現如下提示修改的時候需要清下Cache,切記。
勾選advanced,作以下配置:
Build_testing 取消 (如果不取消勾選的話,當生成CTK.sln,編譯時會報錯:MSB600.exe錯誤)
CTK_ENABLE_WIDIGETS 勾選
CTK_LIB_VISUALIZATION/VTK/CORE 勾選
CTK_LIB_VISUALIZATION/VTK/WIDGETS 勾選
CTK_LIB_WIDGETS 勾選
注意:以上設定完成繼續configure,出現下圖,我們勾選CTK_LIB_VISUALIATION/VTK/WIDGETS_USE_TRANSFER_FUNCTION_CHARTS,繼續configure
當時發現CMake裡面還是有紅色的警告,把Qt5GUI_DIR、Qt5OpenGL_DIR、Qt5UiTools_DIR、Qt5Widget_DIR這幾個紅色的配置項的值修改成你本地qt5的安裝路徑
以上設定完成繼續configure,出現下圖,我們勾選CTK_LIB_VISUALIATION/VTK/WIDGETS_USE_TRANSFER_FUNCTION_CHARTS,繼續configure
這樣才算完全編譯正确,沒有任何紅色的警告
如果還有問題,好吧,我也沒轍了。。。。。。我隻能幫你到這了,哈哈哈
2. 在生成路徑下面會看到CTK.sln,使用Vs2017打開,選擇ALL_BUILD,進過大概20多分鐘,視自己電腦組態情況而定
3. 生成.h頭檔案,lib靜态庫,和dll動态庫,最核心的隻有2個CTKCore.lib/dll CTKPluginFramework.lib/dll
我這裡額外編譯了CTKWidgets.lib,是為了使用ctkWidget,ctkWidget裡面封裝了QWdget,并擴充了QWidgeht
另外為了使用ctk事件機制,有多編譯了org_commontk_eventadmin.lib org_commontk_log.lib org_commontk_configadmin.lib
org_commontk_metatype.lib 這些庫在CMake裡面都是可配置的
如果使用vs2017打開ctk.sln,編譯時報錯:
嚴重性 代碼 說明 項目 檔案 行 禁止顯示狀态 錯誤 MSB3073 指令“setlocal [E:\ctkFrameworkPlugin\CTK-master-debug-build\CTK-bu
請使用管理者權限運作vs2017,然後編譯
2. ctkPluginFramework插件系統在Windows下使用MinGW的編譯過程
用cmake-gui産生makefile
查了下cmake目錄下并沒有ccmake程式,但是有個cmake-gui,用起來起始功能差不多。打開cmake-gui,配置下source cod與build the binaries的路徑
點選Configure按鈕,在彈框中配置generator為MinGW Makefiles,然後點選Next,配置下MinGW編譯器路徑。
點選确認後預設首次generate會報錯,因為預設CTK配置的Qt版本為QT4,需要做更改成5。
另外,把CTK下面CTK_ENABLE_PluginFramework也改為打開。
最後點選generate,成功時會有"configuring done Generating done"列印,這時,ctk-superbuild目錄下應該有Mkaefile生成了。
編譯
用win10下強大的
Windows PowerShell
軟體,進入到ctk-superbuild目錄,然後用mingw32-make指令進行編譯。