是否可以在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
,您可能会逃脱惩罚。但这需要在你的构建系统中提供显著的支持。