使用Code::Blocks和wxWidgets库开发跨平台App

注:笔者用的是windows 10操作系统。在Linux和MacOS上获取开发所需文件可能要麻烦一些,要自己编译吧(笔者暂时没有亲测,后面要是会用到补上相关的步骤说明)。

一、下载 Code::Blocks

目前 Code::Blocks(以下简称CB)的最新版本是20.03,下载地址:Code::Blocks - Code::Blocks


进入CB官网后,网页左侧下方找到Downloads,点击进入下载页面

点击 Download the binary release(下载二进制发行文件)

读者可以依据下方的说明根据自身需要选择下载适合自己的版本。由于笔者电脑上已经安装了mingw,所以直接选择下载了第一个。

注:没选择nosetup这个版本(免安装版,或者叫绿色版)是因为多年的开发习惯导致,因为免安装版很可能需要手动配置一些环境变量之类的。

下载安装完成后,直接双击安装就行了,这里就不赘述了。

二、下载对应版本的wxWidgets开发文件:头文件(include)和库文件(lib)。

进入wxWidgets官网,点击Download Now 进入下载页面

由于CB是基于wx3.1.3 - gcc 8.1.0构建的,笔者看到官网上只提供3.2.2.1、3.0.5版本预编译的二进制文件,于是尝试用3.0.5版的binary进行构建应用后运行时报错,只能另寻它法。

3.0.5

用3.0.5构建后运行时报错

这里笔者要敲黑板了:GitCode上提供很多项目的镜像,要是平时有什么国外的开源项目想要使用,可以来这里来搜搜。

于是笔者就下载到了3.1.7,下载步骤如下:

进入全发行版页面

下拉找到3.1.7,下载对应的头文件和库文件(开发时用的),ReleaseDLL是程序发行时用到库文件。

Header Files头文件,Development Files库文件,下载完成后两个文件分别对应的就是include和lib。至于Release DLLs是App发布时直接使用的库文件。

下载完成后解压并将include和lib放置于同一个目录下。

好,准备工作都做完了,现在打开CB开始编写第一个wxWidgets App。

三、编写wxWidgets App

选择 File | New | Project… 菜单选项。

选择wxWidgets project 模板,Go,Next,选择 3.1.x,Next,

输入项目名称,手动输入或者选择项目存放的路径,Next

项目信息页面读者根据自身需要进行填写,不想填就留白,Next

选择 Frame Based Application Type。Frame Based apps 可以有菜单,工具栏,并且适合大型应用。

Next,选择wxWidgets的路径,就是之前我们解压后放置文件的位置。

读者可以参考上面的图进行配置。下面是笔者电脑上配置好后的截图。

Next

勾选 Enable unicode 选项。Next

Finish。

进入CB的工作空间(Workspace)。点击工具栏上的Build,或Run,或Build and run按钮,也可以选择Build菜单下的相关子菜单项(可以自己记下快捷键),这时会报错(如果没有就忽略以下步骤)。

我们进入到include目录,发现wx目录下确实没有setup.h文件。

但发现wx目录下有很多以相关平台名字命名的子目录。

Windows对应的子目录就是msw,进入该目录,其下确实有个setup.h,而且其它系统、平台对应的子目录下也有。

修改platform.h文件中的报错行代码为如下所示

#include "wx/msw/setup.h"

修改完成后记得保存文件再构建,否则还是会报错。要么修改相关配置,使CB在构建前自动保存修改。但是笔者没有去找,不知道有没有,理论上应该有[我想静静]

再次构建启动,再次报错

但是进入lib目录发现这些文件都存在,切换到Build log,看报错是库文件的目录有问题,试了几种方法,最后发现根据构建信息修改目录名称为 gcc_lib就行了。

将lib的子目录改名成gcc_lib,否则构建时会报错

最后构建,成功!

运行,成功!

太开心了!

果然是够麻烦呐。

这货果然不好用,怪不得小众的。

今天就到这里吧,被折腾得不行了。

但折腾有折腾的好处,每一次折腾成功都是一次成长[碰拳]

我们再乘胜追击,小小修改一下程序,看下效果。

打开wxHelloWorldApp.cpp,将25行代码修改如下

/***************************************************************
 * Name:      wxHelloWorldApp.cpp
 * Purpose:   Code for Application Class
 * Author:     ()
 * Created:   2023-09-25
 * Copyright:  ()
 * License:
 **************************************************************/

#ifdef WX_PRECOMP
#include "wx_pch.h"
#endif

#ifdef __BORLANDC__
#pragma hdrstop
#endif //__BORLANDC__

#include "wxHelloWorldApp.h"
#include "wxHelloWorldMain.h"

IMPLEMENT_APP(wxHelloWorldApp);

bool wxHelloWorldApp::OnInit()
{
    wxHelloWorldFrame* frame = new wxHelloWorldFrame(0L, _("你好,世界!"));
    frame->SetIcon(wxICON(aaaa)); // To Set App Icon
    frame->Show();
    
    return true;
}

构建,运行

现在开发环境算是搭建成功,接下来就可以遨游于wxWidgets的世界了!

下面读者可以打开wxHelloWorldMain.cpp查看一下,理解理解,看能不能尝试修改状态栏的“Hello Code::Blocks user!”提示语,然后构建运行查看效果。

提示:

举报
评论 0