Приветствую всех,
Я пытаюсь реализовать плагин QT с CMake.Но эта директива Q_EXPORT_PLUGIN2 останавливает мой класс от компиляции.Я могу скомпилировать плагин, если я закомментировал это, но он не будет работать как плагин, если я это сделаю.
В документе QT написано:
Q_EXPORT_PLUGIN2 ( PluginName, ClassName )
ЗначениеPluginName должно соответствовать TARGET, указанному в файле проекта плагина
Что в случае с CMake?Каким должно быть значение для 'PluginName'?
Вот мой интерфейс плагина:
#ifndef RZPLUGIN3DVIEWERFACTORY_H_
#define RZPLUGIN3DVIEWERFACTORY_H_
#include <QObject>
#include "plugin/IRzPluginFactory.h"
class RzPlugin3DViewerFactory :public QObject,public IRzPluginFactory{
Q_OBJECT
Q_INTERFACES(IRzPluginFactory)
private:
QString uid;
public:
RzPlugin3DViewerFactory();
virtual ~RzPlugin3DViewerFactory();
IRzPlugin* createPluginInstance();
IRzPluginContext* createPluginContextInstance();
QString & getPluginUID();
};
#endif /* RZPLUGIN3DVIEWERFACTORY_H_ */
И реализация
#include "RzPlugin3DViewerFactory.h"
#include "RzPlugin3DViewer.h"
RzPlugin3DViewerFactory::RzPlugin3DViewerFactory() {
uid.append("RzPlugin3DView");
}
RzPlugin3DViewerFactory::~RzPlugin3DViewerFactory() {
// TODO Auto-generated destructor stub
}
IRzPlugin* RzPlugin3DViewerFactory::createPluginInstance(){
RzPlugin3DViewer *p=new RzPlugin3DViewer;
return p;
}
IRzPluginContext* RzPlugin3DViewerFactory::createPluginContextInstance()
{
return NULL;
}
QString & RzPlugin3DViewerFactory::getPluginUID()
{
return uid;
}
Q_EXPORT_PLUGIN2(pnp_extrafilters, RzPlugin3DViewerFactory)
Сообщение об ошибке:
[12%] Создание объекта CXX CMakeFiles / RzDL3DView.dir / RzPlugin3DViewerFactory.cpp .obj C: \ svn \ osaka3d \ trunk \ osaka3d \ rinzo-platform \ src \ dlplugins \ threedviewer \ RzPlugin3.: ошибка: ожидаемый конструктор, деструктор или тип разговора до '(' токен make [2]: *** [CMakeFiles / RzDL3DView.dir / RzPlugin3DViewerFactory.cpp.obj] Ошибка 1
make [1]: * [CMakeFiles / RzDL3DView.dir / all] Ошибка 2: * [все] Ошибка 2