ctkPluginFramework编译qt_vs2017_gcc

5 篇文章 0 订阅

                   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编译库,事件订阅分发机制例子

      https://download.csdn.net/download/aoxuestudy/12846809

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
GCC 是 C/C++ 编译器,不支持直接编译 Java 代码。Java 代码需要先被编译成字节码,然后由 Java 虚拟机(JVM)解释执行或者编译成本地代码执行。 Java 编译器通常使用 javac 命令进行编译。下面是一个简单的编译示例: ``` javac HelloWorld.java ``` 这将会编译名为 HelloWorld.java 的 Java 源代码文件,并生成一个名为 HelloWorld.class 的字节码文件。 如果你想使用 GCC 编译 Java 代码,你需要先将 Java 代码编译成字节码,然后再使用 GCC 编译字节码文件所生成的头文件和源文件。 下面是一个基本的步骤: 1. 使用 javac 命令编译 Java 代码文件: ``` javac HelloWorld.java ``` 2. 使用 javah 命令生成头文件: ``` javah HelloWorld ``` 这将生成一个名为 HelloWorld.h 的头文件。 3. 将头文件和字节码文件一起使用 JNI 编写 C 代码。在 C 代码中,你需要包含 Java 的头文件和 JNI 库,这样就可以调用 Java 方法了。 4. 使用 GCC 编译 C 代码: ``` gcc -c -I/usr/lib/jvm/java-8-openjdk-amd64/include -I/usr/lib/jvm/java-8-openjdk-amd64/include/linux HelloWorld.c ``` 其中,-I 选项指定了 Java 和 JNI 的头文件所在的目录。 5. 使用 GCC 链接 C 代码和 Java 库: ``` gcc -shared -o libHelloWorld.so HelloWorld.o -lc -ljvm ``` 这将生成一个名为 libHelloWorld.so 的共享库,可以在 Java 中使用 System.loadLibrary() 方法加载。 需要注意的是,由于 GCC 不是专为编译 Java 代码而设计的,因此使用 GCC 编译 Java 代码可能会比较麻烦,并且可能会出现一些问题。建议还是使用专门的 Java 编译器 javac 来编译 Java 代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值