モチベーション
wxWidgetsの開発バージョンである3.3系がリリースされてた
https://wxwidgets.org/news/2025/06/wxwidgets-3.3.0-released/
基本的には互換性を保ってるけど、破壊的変更も含まれるのでChangelog読んでねとのこと
https://raw.githubusercontent.com/wxWidgets/wxWidgets/v3.3.0/docs/changes.txt
実験目的以外は安定版の3.2系を使うべきだけど、ちょっとだけ触ってみる
記事を書いている人の環境
- Windows 11(10でも動くだろうけどもう手元に環境がない)
- MinGW-w64 12.0.0(GCC-15.1.0)
ビルドする環境を整える
ここら辺からMinGW-w64(コンパイラ)とwxWidgetsを探してダウンロード展開する
https://github.com/niXman/mingw-builds-binaries/releases
https://wxwidgets.org/downloads/
記事を書いている人が使ったのはこれ(最新verを確認して自分で探すのがおすすめ!)
https://github.com/wxWidgets/wxWidgets/releases/download/v3.3.0/wxWidgets-3.3.0.zip
https://github.com/niXman/mingw-builds-binaries/releases/download/15.1.0-rt_v12-rev0/x86_64-15.1.0-release-mcf-seh-ucrt-rt_v12-rev0.7z
記事を書いている人はこんな感じで展開・配置(スペースを含むパスは避けたほうがいいかも?)
パスを通す(環境汚したくない人は、シェル上で毎回環境変数をセットしてもいいよ!)
wxWidgetsをビルドする
パワーシェルを開いて、上記のディレクトリに移動してビルドコマンドを叩く
cd C:\dev\wxWidgets-3.3.0\build\msw
mingw32-make SHELL=CMD.exe -f makefile.gcc BUILD=release SHARED=0 MONOLITHIC=1
# -j4とかつけて並列コンパイルしてもいいけど、初回は必要なファイルのコピー等を行っているのでエラーになる
# どう見ても正道じゃないけど記事を書いている人は下記のようにしてる
mingw32-make SHELL=CMD.exe -f makefile.gcc BUILD=release SHARED=0 MONOLITHIC=1
#(適当なタイミングでCtrl+Cで抜ける
mingw32-make SHELL=CMD.exe -f makefile.gcc BUILD=release SHARED=0 MONOLITHIC=1 clean
mingw32-make SHELL=CMD.exe -j 4 -f makefile.gcc BUILD=release SHARED=0 MONOLITHIC=1
※ビルドのパラメーターはここを参照(UNICODEのオプションをなくなったみたいですね)
https://docs.wxwidgets.org/3.3/plat_msw_install.html
3.2系と3.3系で生成さるファイルの比較
変化があるのでコンパイルするときは依存ファイルに注意すること
サンプル集のビルド
wxWidgetsをビルドした時と同じ要領
# wxWidgetsをビルドした時と同じオプションを使うこと(いい感じにビルドコマンドを生成してくれる)
cd C:\dev\wxWidgets-3.3.0\samples
mingw32-make SHELL=CMD.exe -f makefile.gcc BUILD=release SHARED=0 MONOLITHIC=1
相変わらず、webviewのサンプルはコンパイルエラーになるのでmakefile.gccの-limm32の位置を調整する
$(OBJS)\webview.exe: $(WEBVIEW_OBJECTS) $(OBJS)\webview_sample_rc.o
$(foreach f,$(subst \,/,$(WEBVIEW_OBJECTS)),$(shell echo $f >> $(subst \,/,$@).rsp.tmp))
@move /y $@.rsp.tmp $@.rsp >nul
$(CXX) -o $@ @$@.rsp $(__DEBUGINFO) $(__THREADSFLAG) -L$(LIBDIRNAME) -Wl,--subsystem,windows -mwindows $(____CAIRO_LIBDIR_FILENAMES_p) $(LDFLAGS) $(__WXLIB_WEBVIEW_p) $(__WXLIB_STC_p) $(__WXLIB_CORE_p) $(__WXLIB_BASE_p) -lwxscintilla$(WXDEBUGFLAG) $(__LIB_LEXILLA_p) $(__WXLIB_MONO_p) $(__LIB_SCINTILLA_IF_MONO_p) $(__LIB_LEXILLA_IF_MONO_p) $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p) $(__LIB_WEBP_p) -lwxzlib$(WXDEBUGFLAG) -lwxregexu$(WXDEBUGFLAG) -lwxexpat$(WXDEBUGFLAG) $(EXTRALIBS_FOR_BASE) $(__CAIRO_LIB_p) -lkernel32 -luser32 -lgdi32 -lgdiplus -lmsimg32 -lcomdlg32 -lwinspool -lwinmm -lshell32 -lshlwapi -lcomctl32 -lole32 -loleaut32 -luuid -lrpcrt4 -ladvapi32 -lversion -lws2_32 -lwininet -loleacc -luxtheme -limm32
@-del $@.rsp
生成された各サンプルのフォルダ内のexeファイル実行してみる
Hallo World!
書きかけ!