zoukankan      html  css  js  c++  java
  • 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-masterCMakectkMacroSetupQt.cmake,将4改为5

    6、设置CTKData路径,CTK-masterCMakeExternalsCTKData.cmake

    添加如下:

    #set CTKData_path
    
    set(CTKData_DIR ${CMAKE_CURRENT_SOURCE_DIR}/CTKData)

    7、修改安装选项,如果不设置就不会安装,CTK-masterSuperBuild.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-masterCMakectkMacroSetupQt.cmake,将4改为5

    6、设置CTKData路径,CTK-masterCMakeExternalsCTKData.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不用,貌似都是一体的

  • 相关阅读:
    2020软件工程作业04
    2020软件工程作业03
    2020软件工程作业02
    2020软件工程作业01
    2020软件工程个人作业06——软件工程实践总结作业
    2020软件工程作业05
    2020软件工程作业02
    软件工程作业01
    2020软件工程个人作业06——软件工程实践总结作业
    2020软件工程作业05
  • 原文地址:https://www.cnblogs.com/judes/p/13207373.html
Copyright © 2011-2022 走看看