cloudcompare插件编写教程
一、简介
首先从cloudcompare(后面简称cc)官网上下载源码,解压后在\plugins\example
路径下可以看到名为ExamplePlugin
、ExampleIOPlugin
、ExampleGLPlugin
这三个文件夹,以及一个CMakeLists.txt
文件。这三个文件夹都是插件的模板,字面意思上理解,分别是写一般插件、输出输出、显示相关的。
二、修改为自己的插件
下面讲一下一般插件ExamplePlugin
的编写细则。首先复制一份ExamplePlugin
,更改文件夹名字为自己的插件名,这里就命名为myplugin
,然后打开CMakeLists.txt
,仿照上面三行,赋值一下,改为自己的插件名,如下所示:
下面,进入myplugin
文件夹,然后把里面的命名为ExamplePlugin
的文件都更改为myplugin
,如下所示:
下面就按照文件顺序进行修改吧,其实整个修改过程并不存在先后顺序,重点只是需要把所有模板的命名都改为自己的插件名而已。在这里,images里面存的是插件的图标图片,可以自己修改图片以及命名,只是后面写路径时候要注意保持一致就好了。
1. CMakeLists.txt
首先,打开CMakeLists.txt
,将第13行的ExamplePlugin
改为myplugin
,第9行和第11行的命名随意,可改可不改,如下所示:
2. info.json
保存,然后打开info.json
文件,这个文件主要是写一些插件的描述,这里最重要的是把第4行的":/CC/plugin/ExamplePlugin/images/icon.png"
改为自己的插件图标路径和命名":/CC/plugin/myplugin/images/icon.png"
。在这里,前面的CC并不是真实的路径,感觉像是宏一类的,会在运行时候自动替换为你当前的绝对路径,所以可以不用管它。然后第3行的name
的值是插件在cc里的名字,可以自己随意改动,这里就也命名为myplugin
了。其他一些信息可以自己按需要设置,这些信息不会对生成插件造成影响。修改后如下所示:
3. myplugin.cpp
下面打开myplugin.cpp
,直接在记事本里面,将ExamplePlugin
全部替换为myplugin
,如下所示:
4. myplugin.h
打开myplugin.h
,同理,直接将所有的ExamplePlugin
全部替换为myplugin
,不过,这里还需要改一个地方,第49行,将Example
改为myplugin
。这是插件的唯一标识,具体描述直接看46-48行就知道了。
5. myplugin.qrc
最后,打开myplugin.qrc
,将第2行的prefix路径修改为自己的路径,在这里,我们应该将ExamplePlugin
改为myplugin
,如下图所示:
三、编译
好了,到这里一切工作就都已经准备完毕了,接下来就是使用cmake对源码进行编译了,编译的教程可以参考这里。有一点不同的是,在configure之后,generate之前,要先把PLUGIN_MYPLUGIN
项目勾上,如下图所示。这个就是刚才我们修改好的myplugin项目了,都改好后点击generate就可以了。
四、功能实现
生成后,打开生成的sln工程,组织如下:
插件功能的实现都是在我们建立的myplugin
里面的h和cpp文件中进行的。展开myplugin项目,如下所示:
插件功能实现的接口都是在doAction
这个函数里面,可以把它认为是控制台程序中的main函数。如下图所示:
如果将它与main函数类比,那应该就很好理解了。简单的操作你可以直接在这个函数里实现,而复杂的操作,你也可以像控制台程序那样,在myplugin
这个工程里新建很多h和cpp文件来进行实现。模板里实现的功能是点击这个plugin后,会在cc底下输出hello这行字样。功能实现以后,将程序改为release x64
环境,然后点击顶部菜单栏的生成->批生成
,全部勾上,然后关闭。右键ALL_BUILD
工程,然后就是漫长的编译等待了。
ALL_BUILD
生成成功后,右键INSTALL
工程,点击生成。生成成功后,你就可以在cmake时候指定的生成路径下看到cloudcompare
文件夹了:
打开,可以看到里面有cc的exe文件,然后plugins
文件夹里有名字为myplugin
的dll文件,这个就是你编译生成的插件了。
双击运行exe文件,在打开的cc顶部菜单栏,可以看到自己编写的插件: