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文件夹

 注意勾上Grouped和Advanced,不然很多选项找不到

 

 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不用,貌似都是一体的

posted @ 2020-06-29 12:25  朱小勇  阅读(3746)  评论(2编辑  收藏  举报