ctkPluginFramework编译qt5.12_vs2017_gcc4.8
前言
使用ctkPluginFramework作为插件系统框架的确有着众多开发上的优势。最近收到一些站内信,大家都想使用ctkPluginFramework但是不知道如何编译,这篇教程就来讲一讲:另外在文章末尾我会附上ctkPluginFramework编译好的库,包括完整的头文件,lib,dll,和使用库写的例子,使用到了ctk事件订阅分发机制传输数据,方便读者下载。
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文件;
若果还有问题:
我在用cmake编译是报错:
CMake Error at CMake/ctkMacroSetupQt.cmake:87(message):
error: Qt4 was not found on your system. You probably need to set the
QT_QMAKE_EXECUTABLE variable
有人说要修改CMake/ctkMacroSetupQt.cmake,将
set_property(CACHE CTK_QT_VERSION PROPERTY STRINGS 4 5)改成set_property(CACHE CTK_QT_VERSION PROPERTY STRINGS 5 4)
以及
set(CTK_QT_VERSION “4” CACHE STRING “Expected Qt version”)改为set(CTK_QT_VERSION “5” CACHE STRING “Expected Qt version”)
我修改之后还是报错,我谷歌后找到了不修改ctkMacroSetupQt的方法,具体如下:
(1).点击Add Entry
(2).添加
CTK_QT_VERSION (to 5)
CMAKE_PREFIX_PATH (with the path to the cmake folder in Qt)
(3).点击主界面的Generate即可
如果还有问题,如果不修改,在进行config读取配置的时候会出现如下图所示的提示信息。出现如下提示修改的时候需要清下Cache,切记。
勾选advanced,作以下配置:
Build_testing 取消 (如果不取消勾选的话,当生成CTK.sln,编译时会报错:MSB600.exe错误)
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里面都是可配置的
如果使用vs2017打开ctk.sln,编译时报错:
严重性 代码 说明 项目 文件 行 禁止显示状态 错误 MSB3073 命令“setlocal [E:\ctkFrameworkPlugin\CTK-master-debug-build\CTK-bu
请使用管理员权限运行vs2017,然后编译
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编译库,事件订阅分发机制例子