1.创建插件Activator

ctkTestAppActivator_p.h

#include <QScopedPointer>

#include <ctkPluginActivator.h>

class MyAppContainer;

class ctkTestAppActivator : public QObject,
    public ctkPluginActivator
{
  Q_OBJECT
  Q_INTERFACES(ctkPluginActivator)
  Q_PLUGIN_METADATA(IID "org.plugin.test")
public:

  ctkTestAppActivator();
  ~ctkTestAppActivator();

  void start(ctkPluginContext* context);
  void stop(ctkPluginContext* context);
};

ctkTestAppActivator.cpp

#include "ctkTestAppActivator_p.h"

#include <ctkPluginContext.h>

#include <QtPlugin>
#include <QDebug>

//----------------------------------------------------------------------------
ctkTestAppActivator::ctkTestAppActivator()
{
}

//----------------------------------------------------------------------------
ctkTestAppActivator::~ctkTestAppActivator()
{
}

//----------------------------------------------------------------------------
void ctkTestAppActivator::start(ctkPluginContext* context)
{
  qDebug() << "[org.plugin.test] ctkTestAppActivator::start()";
}

//----------------------------------------------------------------------------
void ctkTestAppActivator::stop(ctkPluginContext* context)
{
  qDebug() << "[org.plugin.test] ctkTestAppActivator::stop()";
}

2.编写CMakeLists.txt文件

CMakeLists.txt

project(org_plugin_test)

set(PLUGIN_export_directive "org_plugin_test_EXPORT")

set(PLUGIN_SRCS
  ctkTestAppActivator.cpp
)

set(PLUGIN_MOC_SRCS
  ctkTestAppActivator_p.h
)

set(PLUGIN_resources

)

ctkFunctionGetTargetLibraries(PLUGIN_target_libraries)

ctkMacroBuildPlugin(
  NAME ${PROJECT_NAME}
  EXPORT_DIRECTIVE ${PLUGIN_export_directive}
  SRCS ${PLUGIN_SRCS}
  MOC_SRCS ${PLUGIN_MOC_SRCS}
  RESOURCES ${PLUGIN_resources}
  TARGET_LIBRARIES ${PLUGIN_target_libraries}
  TEST_PLUGIN
)

这里project里面的是项目名称,这个名称至少要带有一个"_",否则会编译失败,剩下的除了源文件和头文件的分类,其他部分不变,set(PLUGIN_export_directive "org_plugin_test_EXPORT")中的值自己指定

3.编写manifest_headers.cmake和target_libraries.cmake

这两个文件是为了编译时候生成MANIFEST.MF和*.pro文件

manifest_headers.cmake

set(Plugin-ActivationPolicy "eager")
set(Plugin-Name "org_plugin_test")
set(Plugin-Version "0.1")
set(Plugin-Description "Test plugin for framework, org_plugin_test")
set(Plugin-Vendor "CommonTK")
set(Plugin-ContactAddress "http://www.commontk.org")
set(Plugin-Category "test")

target_libraries.cmake

set(target_libraries
  CTKPluginFramework
  )

其中set(Plugin-ActivationPolicy "eager")参数不要修改,其他参数参照CTK 中的 MANIFEST.MF 文件

4.将上述文件放在一个文件夹下,将该文件夹复制到CTK-master\Libs\PluginFramework\Testing\FrameworkTestPlugins\目录下,然后在CTK-master\Libs\PluginFramework\Testing\CMakeLists.txt下添加该文件夹配置信息

5.使用CMake编译CTK-master,得到ctk的工程文件

6.使用vs编译ctk,得到插件的工程文件

7.使用vs编译插件

8.将插件在CTK-master-build\CTK-build\bin\test_plugins\下生成的相应版本的dll库直接添加到要用的地方

10-06 12:42