首頁 > 軟體

如何在 Ubuntu/Debian/Linux Mint 中編譯和安裝 wxWidgets

2020-06-16 17:58:16

wxWidgets

wxWidgets是一個程式開發框架/庫, 允許你在Windows、Mac、Linux中使用相同的程式碼跨平台開發。它主要用C++寫成,但也可以與其他語言系結比如Python、Perl、Ruby。

本教學中我將向你展示如何在基於Debian的linux中如Ubuntu和Linux Mint中編譯wxwidgets 3.0+。

從原始碼編譯wxWidgets並不困難,僅僅需要幾分鐘。庫可以按不同的方式來編譯,比如靜態或者動態庫。

 

1. 下載 wxWidgets

第一步你需要從wxwidgets.org下載wxWidgets原始碼檔案。

做完後,解壓到目錄。

 

2. 設定編譯環境

要編譯wxwidgets,我們需要一些工具包括C++編譯器,在Linux上是g++。所有這些可以通過apt-get工具從倉庫中安裝。

我們還需要wxWidgets依賴的GTK開發庫。

  1. $ sudo apt-get install libgtk-3-dev build-essential checkinstall

這個叫做checkinstall的工具允許我們為wxwidgets建立一個安裝包,這樣之後就可以輕鬆的使用包管理器來解除安裝。

 

3. 編譯 wxWidgets

進入到wxWidgets解壓後的目錄。為了保持清潔,建立一個編譯用的目錄。

  1. $ mkdir gtk-build
  2. $ cd gtk-build/

現在執行configure和make命令。每個將花費一些時間來完成。

  1. $ ../configure --disable-shared --enable-unicode
  2. $ make

"--disable-shared"選項將會編譯靜態庫而不是動態庫。

make命令完成後,編譯就成功了。是時候安裝wxWidgets到正確的目錄。

更多資訊請參考install.txt和readme.txt,這可在wxwidgets中的/docs/gtk/目錄下找到。

 

4. 安裝 checkinstall

現在我們不使用"make install"命令,我們使用checkinstall命令來建立一個wxwidgets的deb安裝包。執行命令:

  1. $ sudo checkinstall

checkinstall會詢問幾個問題,請保證在提問後提供一個版本號,否則將會失敗。

完成這一切後,wxWidgets就安裝好了,deb檔案也會建立在相同的目錄下。

 

5. 追蹤安裝的檔案

如果你想要檢查檔案安裝的位置,使用dpkg命令後面跟上checkinstall提供的包名。

  1. $ dpkg -L package_name
  2. /.
  3. /usr
  4. /usr/local
  5. /usr/local/lib
  6. /usr/local/lib/libwx_baseu-3.0.a
  7. /usr/local/lib/libwx_gtk3u_propgrid-3.0.a
  8. /usr/local/lib/libwx_gtk3u_html-3.0.a
  9. /usr/local/lib/libwxscintilla-3.0.a
  10. /usr/local/lib/libwx_gtk3u_ribbon-3.0.a
  11. /usr/local/lib/libwx_gtk3u_stc-3.0.a
  12. /usr/local/lib/libwx_gtk3u_qa-3.0.a
  13. /usr/local/lib/libwx_baseu_net-3.0.a
  14. /usr/local/lib/libwxtiff-3.0.a

 

6. 編譯範例

編譯wxWidgets完成後就可以馬上編譯範例程式了。在相同的目錄下,一個新的sample目錄已經建立了。

進入它並執行下面的命令

  1. $ compile samples
  2. $ cd samples/
  3. $ make

make命令完成後,進入sample 子目錄,這裡就有一個可以馬上執行的Demo程式了。

 

7. 編譯你的第一個程式

你完成編譯demo程式後,可以寫你自己的程式來編譯了。這個也很簡單。

假設你用的是C++,這樣的話你還可以使用編輯器的高亮特性。比如gedit、kate、kwrite等等。或者用全功能的IDE像Geany、Codelite、Codeblocks等等。

然而你的第一個程式只需要用一個文字編輯器來快速完成。

如下:

  1. #include<wx/wx.h>
  2. classSimple:public wxFrame
  3. {
  4. public:
  5. Simple(const wxString& title)
  6. : wxFrame(NULL, wxID_ANY, title, wxDefaultPosition, wxSize(250,150))
  7. {
  8. Centre();
  9. }
  10. };
  11. classMyApp:public wxApp
  12. {
  13. public:
  14. boolOnInit()
  15. {
  16. Simple*simple =newSimple(wxT("Simple"));
  17. simple->Show(true);
  18. returntrue;
  19. }
  20. };
  21. wxIMPLEMENT_APP(MyApp);

現在儲存並用下面的命令編譯。

  1. # compile
  2. $ g++ basic.cpp `wx-config --cxxflags --libs std`-o program
  3. # run
  4. $ ./program

 

和非標準的庫一起編譯

面展示的wx-config命令預設只支援標準的庫。如果你使用的是Aui庫,那麼你需要指定額外用到的庫。

  1. $ g++ code.cpp `wx-config --cxxflags --libs std,aui`-o program

更多的資訊參考這裡這裡

 

資源

下載wxWidgets的原始碼和幫助 https://www.wxwidgets.org/downloads/

wxWidgets編譯的wiki頁面 https://wiki.wxwidgets.org/Compilingandgetting_started

使用wxWidgets最新版本(3.0+)的事項 https://wiki.wxwidgets.org/UpdatingtotheLatestVersionofwxWidgets


IT145.com E-mail:sddin#qq.com