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库直接添加到要用的地方