2013-11-21 72 views
1

是否可以在定義中使用QT qmake指令?QT qmake說明中定義?

我試圖通過一個定義來創建一個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後,使我的程序不加載插件。 消息是:插件驗證數據不匹配

回答

1

不,它不是(直接)可能的,因爲moc不做預處理。請參閱Qt docs for moc中的相關章節。

如果您手動運行預處理器(有些黑客不想展開moc-使用的宏如Q_OBJECT),然後在預處理文件上運行moc,則可能會失控。但是這需要在你的構建系統中提供重要的支持。