Cloudcompare在Ubuntu系统环境下plugin插件二次开发

最近需要在Ubuntu系统下给Cloudcompare添加插件完善一些功能,Cloudcompare的plugin的插拔添加方式还是十分方便的,教程也相对较多,但CSDN上教程目前基本都是WIN+VS+Cmake_GUI完成,Ubuntu指导较少,我这样的纯新手只能照猫画虎一步步摸索。目前做完一小块后记录一下以防遗忘,也给同样新入门的人做个参考。插入的总体思路与WIN+VS差不多,参考自此链接

使用的版本是Ubuntu18.04+ROSmelodic+Cloudcompare 2.11 +PCL1.8(ROS自带的) + Cmake 3.20(ROS自带版本较低,具体更换过程可参考此链接)

1.下载Cloudcompare并解压

        去Cloudcompare下载源码,并解压缩。进入/plugin/example文件夹后,有三个示例文件分别为ExampleGLPlugin,ExampleIOPlugin,ExamplePlugin。我们开发实现功能的插件,选择ExamplePlugin并复制出一个新的文件夹,改名为MY_PLUGIN以作区分。

         随后,修改CMakeLists,将自己的插件文件夹加入。

 2.修改MY_PLUGIN文件夹内容

      2.1基本内容修改

        文件初始内容分别为images文件夹、CMakeLists.txt,ExamplePlugin.cpp(主要实现功能在此),ExamplePlugin.h(包含头文件),ExamplePlugin.qrc以及info.json。

images存放的是图标信息,ExamplePlugin.qrc与info.json中存放一些工程信息,具体可见此

随后需要修改此文件夹内的CMakeLists.txt。

需要修改的至少有三处,前两处为编译时需要选择的开关名称,后面会用到, 后面则是此插件项目名称。 同时需要注意18行处的include。

      2.2修改ExamplePlugin.cpp与ExamplePlugin.h

        此处为比较重要步骤,需要将自己的插件功能写入函数。cpp为实现过程,.h为声明,包含#include等,不多介绍。随后进入重点,在doAction()函数中箭头处,添加好自己的程序代码。即为当点击按钮后执行的函数,若比较简单的函数写在此处即可,我的插件行数较多,则只在doaction处写了窗口show()函数,其他功能均在其他地方实现。下面的三行m_app->为example示例,为控制台输出(不重要可删除)。

  ​​

 随后在ExamplePlugin.h中加入所需包含的头文件、QT文件、自己写的插件cpp等。

我的插件格式如下图,ExamplePlugin.cpp只是在点击时通过doAction()调用了创建对象并show()的功能,其他功能均在其他文件实现,通过ExamplePlugin.h,#include 给ExamplePlugin.cpp调用。同时需要注意myplugin.ui文件,在编译时,CC会自动将此文件转换出ui_myplugin.h。

      2.3修改上一层目录中CMakePluginTpl.cmake

        在2.1步骤中提出需要注意此处,在此处添加自己插件所需要依赖,比如我使用了OpenCV,则在其中添加如下。(注:此处也可以不加至CMakePluginTpl.cmake中,加在插件本身的CMakeLists.txt(MY_PLUGIN/CMakeLists.txt)也一样)。

         至此,大部分工作已做完,准备编译。主要是2.2中,对于ExamplePlugin.cpp中doAction()实现需要自己绕清楚。

3.编译实现

       此处应该是和WIN最大的不同,使用命令行而非Cmake GUI,个人感觉更加方便。

       跟随官网教程进行编译,返回cloudcompare源码最初目录,新建build文件夹并进入。如同PCL作为cloudcompare的一个插件一样,在cmake时需要输入-D激活命令如下。

sudo cmake .. -DPLUGIN_STANDARD_QPCL=ON

       此时回到2.1记住红框处圈出的INSTALL_MY_PLUGIN,同理需要激活cmake。

sudo cmake .. -DINSTALL_MY_PLUGIN=ON

       最后进行两步即可安装成功。

sudo cmake --build .
sudo cmake --install .

       在plugins处可以找到自己加入的插件。

4.写在最后

      总体来说两个系统编译插件的路径几乎一样,只是Ubuntu环境下的教程较少。比较绕的地方就是在ExamplePlugin.cpp中如何把自己的插件写入函数,在点击时调用doAction()激活。之后在编译过程中反而比WIN要简单不少。

      补充注意:ExamplePlugin.cpp中有一个函数决定是否必须在选中一团点云(实体)后才可以点击插件,如果插件是专门处理点云的话建议设置必须选中一个对象后才可以点击。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值