文章内容:VS 2022 配置 wxWidgets C++ 桌面应用程序开发环境
关键词组:C++, Debug, Release, DLL, GUI, wxFormBuilder, 跨平台, Qt, wxPython, wxwin, win32, x86, x64, aui, setup.h
使用软件:Microsoft Visual Studio 2022, wxWidgets 3.2.6
操作系统:Windows 11

封面图

🍭为了不浪费大家时间,请先对齐一下阅读需求:

  • 你装好了 Microsoft Visual Studio,本文不讨论其安装;
  • 你使用 Visual Studio 这个 IDE,不是 Visual Studio Code、CodeBlocks、wxFormBuilder 等;
  • 你使用 VS 内置的 MSVC 编译器,而不是 MinGW(GCC 编译器,它和 VS 配合需要额外配置)、LLVM 等;
  • 你使用 wxWidgets 这个跨平台 GUI 库开发 C++ 应用程序;
  • 你想深入了解不同库目录的结构,精简开发环境大小,环境调优,控制发包大小等;

一、wxWidgets (跨平台 GUI 库) 的安装和构建

LOGO

① 官网下载说明

wxwidgets官网下载页(建议)
wxwidgets 项目 Github 下载页

建议直接官网下载构建好的小包。
具体下载哪几个,看完后面内容,有了更好的了解,回来再下载也不迟。

国内外文章基本是让你下载源码 (下图 Source Code 部分) 自己编译来用,
为什么我不建议普通用户下载源文件包来使用?

  • 因为编译解压后的文件包太大了(可达15GB),
  • 占用空间不说,还可能编译出错,
  • 电脑性能不强的话,编译还费老长时间了。
  • 非必要不要造轮子,直接上标准化的预构建包 (下图 Binaries 部分)。

web page

不过你会发现,x86/x64, Debug/Release, DLL 的组合应该有 8 种不同配置,
而官网预构建的小包不是这样分类的:

  • 首先,Headers Files 是所有配置公用的 (把这个下载下来);
  • 然后分 32-Bit 和 64-Bit (看你项目配置需求选择下载);
  • 再往里 3 个链接名字只有 Release,没有 Debug,是因为官方把 Debug 的库文件 (不是 Development Files 哈 ! ) 也放进去了,因此 Release/Debug 配置用同一个库目录(进一步了解);
  • ⚠️注意,这 3 个链接里,Development Files 是基本库文件 (默认就只下载这个),Release DLLs 是额外的 dll 文件,Release DLLs PDB Files 是额外的 pdb 文件,后两个是在你有对应 (dll, pdb) 需要的时候添加的 (用法参见官网)。
    • 使用 MinGW 也在看文章的朋友也留意,基本静态库文件是下载 Development Files 哈!

注意官网页面下滑选择稳定版本 “Latest Stable Release: x.x.x 》Binaries》Download Windows Binaries”,
不要选到开发版本 “Development Release” 了(可能会存在,且会出现在页首)。
官网预构建文件目录 官网预构建包大小

官网源码文件压缩包30MB左右:
官网源码文件包大小

解压后200MB左右, 但所有配置编译后就会来到 15GB 左右。
源码编译后占用空间大小

而如果下载官网预构建包解压,全配置 (include + 32/64Bit ++ DLL ++ PDB) 下占用空间只有 2.5GB 左右。

② 下载、配置、编译

不需要编译的可跳过本小节内容。

下载源码包(前3个都行):
Source Code

⚠️ 新手注意这里的 windows installer 所谓的 “安装” 只是压缩包的自解压程序,执行的是 “解压” 动作,别拿源码 “安装” 完直接用哦。

解压源码包后,打开目录 wxwidgets-x.x.x/build/msw ,使用 VS 打开对应版本的解决方案 sln 文件,比如我这里 VS 2022 就选 wx_vc17.sln;
source code tree
批量生成 (batch build) 解决方案:
请添加图片描述
根据自己的项目需求,选择配置(默认全选)进行生成:
请添加图片描述
生成完成后,回到源码目录,include/ 目录和 lib/ 下生成的 4 个库目录就是需要的:
请添加图片描述

③ 结构分析

Debug 和 Release 版本对比(以静态库为例)

官网预构建库目录结构如下图所示(64-Bit为例,并省略具体文件):headers + Dev + DLL + PDB
MSVC-x64-vc14x-stu

提一嘴:这里可以看到有些朋友想找的 wx_setup.propswxwidgets.props

  1. 公用文件

    • 头文件(.h)
      • Debug/Rlease 共享同一套头文件(include\ 目录,如 wx/wx.h
      • 原因:接口定义和编译配置无关;
  2. 独立文件

    ℹ️ 下述文件/目录带 u 中/后缀表示 UNICODE 编码版本;

    • 从 wxWidgets 3.0 开始,Unicode 已成为其唯一支持的字符编码模式。
    • MSW 什么含义不用多说了吧 😈

    vc_x64_lib

    • 库文件(.lib)
      • Release:基本文件名(如 wxmsw32u_core.lib
      • Debug:文件名带 d 中缀(如 wxmsw32ud_core.lib
      • 原因:包含不同的编译优化级别、调试符号
    • 配置文件(setup.h)
      • Release:基本目录名(mswu/setup.h
      • Debug:目录名带 d 后缀(mswud/setup.h


    下载的官网预构建静态库目录是这样的,你会发现其中有 u 中后缀的目录/文件,还有 ud 中后缀的目录/文件,说明 Release/Debug 的库文件是放在同一个目录的。
    官网预构建静态库文件

32-Bit 和 64-Bit 比较

同配置文件目录和文件名都是一样的,但文件内容本身是不同的。请添加图片描述

二、Windows 中配置 wxWidgets 环境变量

为方便后面选择配置,需要设置环境变量 (用户或系统均可) WXWIN
设置环境变量 (用户或系统均可)
确认好后 (若 VS 已运行) 需要重启 VS 使变量生效。

三、Visual Studio 中配置 wxWidgets 库环境

运行配置与库目录选择
总结一下就是,所有 8 种配置的包含 (include) 目录都是一样的,库目录有 4 种 (debug 和 release 配置共用一个目录):
总体配置选择一览

① include 依赖

附加包含目录

确认好 计算的值 路径是正确的。

include目录 选择

② lib 依赖

lib目录选择

③ subsystem 选择

子系统模式选择

④ demo 验证

验证代码:

#include <wx/wx.h>
#include <wx/setup.h>

class App : public wxApp {
public:
    bool OnInit() {
        wxFrame* window = new wxFrame(NULL, wxID_ANY, "这是一个全新的窗口程序", wxDefaultPosition, wxSize(600, 400));
        wxBoxSizer* sizer = new wxBoxSizer(wxHORIZONTAL);
        wxStaticText* text = new wxStaticText(window, wxID_ANY, "Hello,World!",
            wxDefaultPosition, wxDefaultSize, wxALIGN_CENTRE_HORIZONTAL);
        text->SetFont(wxFont(20, wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL));
        sizer->Add(text, 1, wxALIGN_CENTER);
        window->SetSizer(sizer);
        window->Show();
        return true;
    }
};

wxIMPLEMENT_APP(App); 

运行成功后的窗口:
demo new window
选择不同配置重试,确保所有配置下均能运行成功。



The End.


认真写博客的人,见一个少一个🤩🤩🤩


觉得文章不错的话:
👍 点赞 支持,
⭐️ 收藏 学习,
💬 讨论 交流,
❤️ 关注 不迷路~
如有错漏请不吝指正~

©2025 CherryChenNan

Logo

一站式 AI 云服务平台

更多推荐