ctkPluginFramework编译qt5.12_vs2017_gcc4.8
前言
使用ctkPluginFramework作为插件系统框架的确有着众多开发上的优势。最近收到一些站内信,大家都想使用ctkPluginFramework但是不知道如何编译,这篇教程就来讲一讲:
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文件;
勾选advanced,作以下配置:
Build_testing 取消
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里面都是可配置的
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命令进行编译。
如果读者嫌麻烦,我这里有编译好的ctk库,使用环境,
windows10+qt5.12+vs2017
下载地址: ctkPluginFramework编译库,事件订阅分发机制例子
https://download.csdn.net/download/aoxuestudy/12846809