自 wxWidgets 2.5.0 版本起,開發者在建置函式庫時擁有了兩種截然不同的選擇:Monolithic(單一巨型函式庫)與 Multilib(多模組函式庫)。預設採用 Multilib 模式,將龐大的功能集合拆解為多個獨立、職責單一的程式庫,並透過依賴關係圖清晰地定義它們之間的層級與引用關係。這種模組化設計不僅減輕連結器負擔,更讓專案能按需引入組件,避免不必要的體積膨脹。
所有 wxWidgets 應用程式(無論 GUI 或主控台)皆須連結 wxBase。它封裝了跨平台的核心抽象層,包含 wxString、容器、檔案系統操作、執行緒與同步原語等基礎設施。關鍵在於它不依賴任何 GUI 函式庫,也無需在 Unix 系統上運行 X Window System,極適合開發跨平台主控台工具或服務程式。
所有圖形介面應用程式的入口。涵蓋 GDI 繪圖類別、視窗系統抽象、標準控制項(按鈕、輸入框、清單等)、事件處理機制與佈局管理。若專案僅需基本 GUI 功能,連結 wxBase + wxCore 即可。
建立在 wxCore 之上,提供:
wxBufferedDC)wxCalendarCtrl)wxGrid 系列)wxSound、wxMediaCtrl 另屬 wxMedia)wxWizard)、工作列圖示(wxTaskBarIcon)、啟動畫面(wxSplashScreen)wxSashWindow、wxSashLayoutWindow)、操縱桿演算法(wxLayoutAlgorithm)、搖桿支援(wxJoystick)| 模組 | 核心功能 | 依賴 |
|---|---|---|
| wxAui | 進階使用者介面:可停靠視窗、工具列、標籤式面板管理 | wxCore, wxBase |
| wxNet | 網路通訊:wxSocket 客戶端/伺服端、Socket 資料流、基於 Socket 的 IPC(wxTCPServer 等)、wxURL、檔案系統網路處理器 | wxBase |
| wxXML | 簡易 XML 解析類別(注意:API 將變更、不保證向後相容,僅供內部 XRC 系統使用,未來將以 DOM-like API 取代) | wxBase |
| wxRichText | 通用富文本控制項與編輯功能 | wxCore, wxBase |
| wxHTML | 簡易 HTML 渲染器、說明系統控制器(wxHtmlHelpController)、wxHtmlListBox | wxCore, wxBase |
| wxMedia | 多媒體播放控制項(wxMediaCtrl),未來擴充更多類別 | wxCore, wxBase |
| wxGL | OpenGL 整合畫布(wxGLCanvas),永遠獨立建置,不納入 Monolithic | wxCore, wxBase |
| wxODBC | 資料庫存取類別 | wxBase |
| wxQA | 品質保證輔助:目前僅 wxDebugReport,未來擴充 | wxCore, wxBase, wxXML |
| wxDbGrid | wxDbGridTableBase:結合 wxGrid 與資料表功能 | wxODBC, wxAdvanced |
| wxXRC | XML 資源系統(XRC 格式)讀寫:wxXmlResource | wxXML, wxCore, wxAdvanced, wxHTML |
理解上述架構圖與依賴鏈,能幫助你在 CMake 或 bakefile 中精準指定 wxWidgets_LIBRARIES,避免「符號找不到」或「重複定義」等連結錯誤,也是從 wxWidgets 入門邁向專業開發的關鍵一步。