一. MITK是什麼?
MITK是一個C++第三方庫,由ITK(負責圖形圖像算法實現),VTK(負責2D圖像,3D圖像的顯示),QT(用戶界面,GUI實現),BlueBerry(MITK核心框架主要由CTK組成,還包括CTK之上的類Eclipse RCP框架),CTK(OSGI 插件熱插拔實現,負責plugin的加載與管理),CppMicroServices(面向服務庫,負責module的加載),POCO(類Eclipse RCP框架的線程實現,主應用程序實現)等等第三方庫組成的一個醫學軟件框架。
二.MITK文件結構
Applications
applications文件夾裏面是幾個應用程序,有標準工作臺應用程序,workbench , diffusion,coreapp等幾個應用程序源碼
大多數情況下我們都是用workbench,其他的基本不怎麼用
CMake
該文件夾內存放的是一些第三方庫的 findxxx.cmake文件及依賴文件,特別是PackageDepends文件夾下的cmake文件,實際上就是用於mitk本身的包管理
CMakeExternals
各種第三方庫的編譯,下載,安裝文件,比如ANN.cmake
note:有的庫有CMakeLists.txt,比如ANNCMakeLists.txt,這個文件的作用是:下載下來的ann源碼可能沒有cmakelists.txt文件或者CMakelists.txt文件的格式(安裝位置,編譯參數)不符合MITK的規範,用該CMakeLists.txt替換原有的來進行編譯。
還有一些.patch文件,就是mitk可能修改了庫的源碼文件,使用該patch替換文件。
Plugins
MITK中的各種插件,注意下圖紅框標註出來的,這些插件就是Eclipse ECP的C++實現,我稱之爲MITK核心底層插件,查看相關eclipse文檔。
剩下的是一些就是在覈心插件之上構建的應用層插件。
modules
MITK模塊文件夾,其中我懂的一些我大概註釋下
CMakeLists.txt
定義各種外部庫的使用和插件,模塊的編譯,安裝,打包規則等等
SuperBuild.cmake
superBuild是cmake的概念,就是指生成項目構建器之前 生成項目依賴的第三方庫的構建器的過程。
生成構建器是指 生成vs工程,或者GCC工程,或者mac下的xcode工程。
該文件裏就是 MITK所依賴的所有第三方庫的上層構建過程,包括如何知道那些第三方庫要構建,構建前的patch等等工作,具體的構建過程是在CMakeExternals文件夾中的.cmake文件裏。