qt creator源碼全方面分析(4-2)
- 2020 年 5 月 6 日
- 筆記
- qt creator源碼分析
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進行導入。
原創造福大家,共享改變世界
獻出一片愛心,溫暖作者心靈