如何在 Ubuntu/Debian/Linux Mint 中编译和安装 wxWidgets

发布于 2024-07-07 18:48:50 字数 3850 浏览 17 评论 0

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 开发库。

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

这个叫做 checkinstall 的工具允许我们为 wxwidgets 创建一个安装包,这样之后就可以轻松的使用包管理器来卸载。

3. 编译 wxWidgets

进入到 wxWidgets 解压后的目录。为了保持清洁,创建一个编译用的目录。

$ mkdir gtk-build
$ cd gtk-build/

现在运行 configure 和 make 命令。每个将花费一些时间来完成。

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

"--disable-shared"选项将会编译静态库而不是动态库。

make 命令完成后,编译就成功了。是时候安装 wxWidgets 到正确的目录。

更多信息请参考 install.txt 和 readme.txt,这可在 wxwidgets 中的/docs/gtk/目录下找到。

4. 安装 checkinstall

现在我们不使用"make install"命令,我们使用 checkinstall 命令来创建一个 wxwidgets 的 deb 安装包。运行命令:

$ sudo checkinstall

checkinstall 会询问几个问题,请保证在提问后提供一个版本号,否则将会失败。

完成这一切后,wxWidgets 就安装好了,deb 文件也会创建在相同的目录下。

5. 追踪安装的文件

如果你想要检查文件安装的位置,使用 dpkg 命令后面跟上 checkinstall 提供的包名。

$ dpkg -L package_name
/.
/usr
/usr/local
/usr/local/lib
/usr/local/lib/libwx_baseu-3.0.a
/usr/local/lib/libwx_gtk3u_propgrid-3.0.a
/usr/local/lib/libwx_gtk3u_html-3.0.a
/usr/local/lib/libwxscintilla-3.0.a
/usr/local/lib/libwx_gtk3u_ribbon-3.0.a
/usr/local/lib/libwx_gtk3u_stc-3.0.a
/usr/local/lib/libwx_gtk3u_qa-3.0.a
/usr/local/lib/libwx_baseu_net-3.0.a
/usr/local/lib/libwxtiff-3.0.a

6. 编译示例

编译 wxWidgets 完成后就可以马上编译示例程序了。在相同的目录下,一个新的 sample 目录已经创建了。

进入它并运行下面的命令

$ compile samples
$ cd samples/
$ make

make 命令完成后,进入 sample 子目录,这里就有一个可以马上运行的 Demo 程序了。

7. 编译你的第一个程序

你完成编译 demo 程序后,可以写你自己的程序来编译了。这个也很简单。

假设你用的是 C++,这样的话你还可以使用编辑器的高亮特性。比如 gedit、kate、kwrite 等等。或者用全功能的 IDE 像 Geany、Codelite、Codeblocks 等等。

然而你的第一个程序只需要用一个文本编辑器来快速完成。

如下:

#include <wx/wx.h>

class Simple : public wxFrame
{
public:
    Simple(const wxString& title)
        : wxFrame(NULL, wxID_ANY, title, wxDefaultPosition, wxSize(250, 150))
    {
        Centre();
    }
};

class MyApp : public wxApp
{
public:
    bool OnInit()
    {
        Simple *simple = new Simple(wxT("Simple"));
        simple->Show(true);
        return true;
    }
};

wxIMPLEMENT_APP(MyApp);

现在保存并用下面的命令编译。

# compile
$ g++ basic.cpp `wx-config --cxxflags --libs std` -o program

# run
$ ./program

和非标准的库一起编译

面展示的 wx-config 命令默认只支持标准的库。如果你使用的是 Aui 库,那么你需要指定额外用到的库。

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

更多的信息参考这里 这里

资源

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

0 文章
0 评论
23 人气
更多

推荐作者

我们的影子

文章 0 评论 0

素年丶

文章 0 评论 0

南笙

文章 0 评论 0

18215568913

文章 0 评论 0

qq_xk7Ean

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文