qt creator源碼全方面分析(4-2)

global頭文件

插件的本質就是動態鏈接庫,對於庫,需要導出符號,供用戶導入使用。在qt creator的源碼中,存在固定的導入導出模式。

global.h

對於每個庫和插件,都有一個xx_global.h頭文件,其中xx為庫或插件名。示例如下

#pragma once

#include <qglobal.h>

#if defined(XX_LIBRARY)
#  define XX_EXPORT Q_DECL_EXPORT
#else
#  define XX_EXPORT Q_DECL_IMPORT
#endif

這就很明顯了,XX_LIBRARY作為開關,來決定導入導出。

xx.h

對於具體的實現,我們可以

class XX_EXPORT xx { ... }

在類的聲明中添加XX_EXPORT。

在qt creator源碼中,在項目文件中添加了定義

DEFINES += XX_LIBRARY

這導致XX_EXPORT被替換為Q_DECL_EXPORT進行導出。

對於庫或插件的使用者,直接包含xx.h即可,由於沒有定義XX_LIBRARY,這裡XX_EXPORT被替換為Q_DECL_IMPORT進行導入。


原創造福大家,共享改變世界

獻出一片愛心,溫暖作者心靈