QT qmake中的说明定义



是否可以在defines中使用QT qmake指令?

我试图通过define:创建一个QT插件接口类

#define PLUGIN(NAME) 
class NAME ## Plugin : public QObject, public IPluginInterface 
{ 
Q_OBJECT 
Q_PLUGIN_METADATA(IID "org.my.Plugins" FILE "NAME ## .json") 
Q_INTERFACES(IPluginInterface) 
public: 
virtual ~NAME ## PluginInterface(){} 
NAME ## PluginInterface(){} 
/* implementation of interface */
}; 
NAME ## Plugin NAME ## plugininterface;

但是在运行qmake和make之后,我的程序没有加载插件。消息是:插件验证数据不匹配

不,这是(直接)不可能的,因为moc不进行预处理。参见moc Qt文档中的相关章节。

如果您手动运行预处理器(有些黑客攻击是为了不扩展moc使用的宏,如Q_OBJECT),然后在预处理的文件上运行moc,您可能会逃脱惩罚。但这需要在你的构建系统中提供显著的支持。

最新更新