windows編譯CTK框架


MingW編譯

一、什么是CTK

總的來說就是一個框架,里面所有的對面如登錄界面、日志功能、數據接收功能、解析功能、數據庫訪問都當做插件的形式,能夠有效降低代碼間的耦合。

CTK包含好幾個核心功能:Plugin Framework、Widgets、DICOM、DICOM Application Hosting、Command Line Interfaces,這里主要是使用Plugin Framework。

插件就是動態庫, 插件技術是使用c++中的多態,定義抽象類接口, 然后再PLugin中實現抽象類接口。
plugin可以動態加載, 動態更新。 可以實現應用的熱插拔技術。 對內存的使用效率比較高。
當要使用的時候用interface 類指針指向 Plugin 就可以使用插件中的函數了。
CTK系統可以管理這些插件, 當需要的時候就可以直接從系統中獲取相應的插件。 然后用想用的抽象接口指向這個插件就可以使用了。

ps:

CTK官網:https://commontk.org/index.php/Main_Page

git:https://github.com/commontk/CTK

二、環境准備

1、安裝Qt5.12.2【只使用了這個版本】

2、安裝Cmake【使用的是3.17.3】

3、配置環境變量【貌似沒有用到】

 

 

4、下載CTK包和CTKData包,解壓,CTKData放在CTK根目錄里

 

 

 5、修改Qt版本,CTK-master\CMake\ctkMacroSetupQt.cmake,將4改為5

6、設置CTKData路徑,CTK-master\CMakeExternals\CTKData.cmake

添加如下:

#set CTKData_path

set(CTKData_DIR ${CMAKE_CURRENT_SOURCE_DIR}/CTKData)

7、修改安裝選項,如果不設置就不會安裝,CTK-master\SuperBuild.cmake

添加:

#add install command 
if(WIN32)
  set(_INSTALL_CMD nmake install)
else()
  set(_INSTALL_CMD make install)
endif()

修改:

INSTALL_COMMAND ${_INSTALL_CMD}

 

 

8、在CTK根目錄下新建build文件夾,用於存放生成的文件

 

 三、生成makefile

1、打開CMake gui,直接將CTK下的CMakelist.txt拖到空白處,然后選擇build的路徑為上面的build文件夾

 

 

 2、配置編譯器環境

點擊configure,彈出框,選擇Mingw,選擇第二個手動設置編譯器,確定

 

 

 

 

 3、會彈出一個設置編譯器的對話框,對應選擇即可

 

 

 4、然后會自動開始configure,但是報錯

 

 

 是因為沒有設置Qt的路徑

5、輸入Qt5_Dir,對應設置即可

 

6、然后重新configure,沒報錯

7、點擊Generate,生成makefile

 8、現在基本環境都ok了,但是需要打開我們希望生成的pluginframework

生成通信工具:

上面的工具Cmakelist里依賴如下的定義,也勾選上,不然報錯:

 

 

 生成ctk框架:

 

生成lib:

 

 

 關閉test,不然會報錯:

 

 設置輸出類型:【debug很大,但是便於調試】

 設置安裝路徑:

 

 

 

 

 

 四、執行makefile

1、打開cmd,進入build目錄

2、執行mingw32-make

 

3、報語法錯誤,刪除對應文件的語法錯誤

 

 對應修改

 

 把這個括號去掉。

4、重新編譯,等待幾分鍾生成dll 

 

 

 MSVC編譯

一、環境准備

1、安裝Qt5.12.2【只使用了這個版本】

2、安裝Cmake【使用的是3.17.3】

3、安裝VS2015【只使用了這個版本】 

4、下載CTK包和CTKData包,解壓,CTKData放在CTK根目錄里

 

 

 5、修改Qt版本,CTK-master\CMake\ctkMacroSetupQt.cmake,將4改為5

6、設置CTKData路徑,CTK-master\CMakeExternals\CTKData.cmake

添加如下:

#set CTKData_path

set(CTKData_DIR ${CMAKE_CURRENT_SOURCE_DIR}/CTKData)

 

7、在CTK根目錄下新建build文件夾,用於存放生成的文件

 

二、生成sln解決方案

0、按照mingw同樣修改相關配置,注意這個一起修改

1、選擇vs2015來編譯

 

 選擇64位,因為我Qt里的MSVC只有2015 64位的

 

 2、報錯沒有Qt的路徑

 

 3、設置Qt路徑

 

 

4、配置需要生成的文件

生成通信工具:

上面的工具Cmakelist里依賴如下的定義,也勾選上,不然報錯:

 

 

 生成ctk框架:

 

生成lib:

 

 

 關閉test,不然會報錯:

 

5、然后點擊configurate和generate,就會生成sln,然后直接點擊打開工程

 

 

 

 VS2015便會自動打開此工程

三、編譯生成動態庫

1、VS2015打開后是這樣的

 

 2、直接右鍵all_build重新生成解決方,等待幾分鍾,沒有報錯

 

 3、這時已經色生成了相關的動態庫

 

 

 

 

 

 

其他注意事項:

1、注意版本,如Qt里MSVC的版本是64,如果在CMake GUI里選擇32,最終VS里編譯就會報錯,一定要保持一致

2、如果有時候報錯,又不知道是什么錯,可能是因為我們新建的build文件夾即用來生成mingw的,然后又用來生成msvc的,Cmake gui沒反應過來,把build文件夾的東西都刪除掉就好了

3、即使勾選上了lib_pliugin,mingw也不會生成lib,而msvc會生成

4、源文件ctkLDAPExpr.cpp確實有錯,這個應該事先我們就改一下,"QStirng()()"這不應該有兩個括號

5、如果希望生成eventAdmin,那么一定要勾選上widget相關庫,不然會報錯。因為eventAdmin的makelist里有一個宏,定義在widget的makelist里面

6、Mingw可以選擇生成的type是debug還是release,MSVC不用,貌似都是一體的


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM