0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

wxWidgetsのサンプル集をビルドする

Last updated at Posted at 2023-05-31

下記の記事で構築した環境であることを前提に解説をする
※異なる環境の場合は適宜読み替えること

wxWidgetsのサンプル集はいいものだ

wxWidgetsにはサンプル集が付属している
どんなwidgetが存在するかを実際に動かしながら探せるのでかなり有用
ソースコードも基本的な使い方を学ぶ上で参考になる
詳細な使い方についてはリファレンスとにらみあうことになるが、どんなwidgetが存在することを知らないことには話が始まらないのでとっかかりとして利用してみてはいかが?

サンプル集の場所

場所はここ
"C:\wxWidgets\wxWidgets-3.2.2.1\samples"

image.png

様々なwidgetのサンプルが各フォルダに配置されている

サンプルのビルド

サンプルのビルドはwxWidgetsをビルドしたコマンドと同じでOK
今回は静的ライブラリをビルドしたコマンドを使う
※makafileがいい感じ静的ライブラリをリンクするコマンドを生成してくれる

個別のサンプルフォルダに配置されているmakefileを使って個別にビルドしてもいいが、
"C:\wxWidgets\wxWidgets-3.2.2.1\samples\makefile.gcc"
を使えばまとめてビルドしてくれるので今回はこれを使う

cd C:\wxWidgets\wxWidgets-3.2.2.1\samples
mingw32-make SHELL=CMD.exe -f makefile.gcc BUILD=release UNICODE=1 SHARED=0 MONOLITHIC=1

さて、順調にコンパイルが進んでいると思いきや"C:/wxWidgets/wxWidgets-3.2.2.1/samples/webview"のところでエラーが出た
image.png

まれによく見る、リンカがシンボルを解決できなくて(言葉合ってる?)コンパイルエラーになってるパターンだろうか?
調べてみると「g++」コマンドのオプション「-limm32」位置がまずいらしい(リンクする順番に依存関係があるのを初めて知った)

なので「C:\wxWidgets\wxWidgets-3.2.2.1\samples\webview\makefile.gcc」を修正する

makefile.gccのそれっぽい行(修正前)
$(CXX) -o $@ @$@.rsp  $(__DEBUGINFO) $(__THREADSFLAG) -L$(LIBDIRNAME)  -Wl,--subsystem,windows -mwindows $(____CAIRO_LIBDIR_FILENAMES_p) $(LDFLAGS)  $(__WXLIB_WEBVIEW_p)  $(__WXLIB_STC_p) -limm32 $(__WXLIB_CORE_p)  $(__WXLIB_BASE_p)  -lwxscintilla$(WXDEBUGFLAG) $(__WXLIB_MONO_p) $(__LIB_SCINTILLA_IF_MONO_p) $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p)   -lwxzlib$(WXDEBUGFLAG) -lwxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG) -lwxexpat$(WXDEBUGFLAG) $(EXTRALIBS_FOR_BASE) $(__CAIRO_LIB_p) -lkernel32 -luser32 -lgdi32 -lcomdlg32 -lwinspool -lwinmm -lshell32 -lshlwapi -lcomctl32 -lole32 -loleaut32 -luuid -lrpcrt4 -ladvapi32 -lversion -lws2_32 -lwininet -loleacc -luxtheme

「-limm32」を末尾に移動する

 makefile.gccのそれっぽい行(修正後)
    $(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) $(__WXLIB_MONO_p) $(__LIB_SCINTILLA_IF_MONO_p) $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p)   -lwxzlib$(WXDEBUGFLAG) -lwxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG) -lwxexpat$(WXDEBUGFLAG) $(EXTRALIBS_FOR_BASE) $(__CAIRO_LIB_p) -lkernel32 -luser32 -lgdi32 -lcomdlg32 -lwinspool -lwinmm -lshell32 -lshlwapi -lcomctl32 -lole32 -loleaut32 -luuid -lrpcrt4 -ladvapi32 -lversion -lws2_32 -lwininet -loleacc -luxtheme -limm32

修正後、再度ビルドコマンドを叩く

cd C:\wxWidgets\wxWidgets-3.2.2.1\samples
mingw32-make SHELL=CMD.exe -f makefile.gcc BUILD=release UNICODE=1 SHARED=0 MONOLITHIC=1

今度はちゃんと最後まで行った

サンプルプログラムを起動してみる

試しに
"C:\wxWidgets\wxWidgets-3.2.2.1\samples\calendar"
のサンプルを起動してみる

コンパイルが正しく終わっていれば「gcc_mswu」フォルダができているので、その中の「calendar.exe」を起動

image.png

image.png

ちゃんと起動できてる

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?