c_cpp:wxwidgets

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
c_cpp:wxwidgets [2019/02/09 08:59] ともやんc_cpp:wxwidgets [2020/02/02 17:38] (現在) ともやん
行 19: 行 19:
     * <del>最初はドキュメントなどもすべて含んでいた方が良いので **wxAll**をダウンロードすることをお勧めする。</del>     * <del>最初はドキュメントなどもすべて含んでいた方が良いので **wxAll**をダウンロードすることをお勧めする。</del>
     * <del>例えば、Visual C++ のワークスペースでのビルドが上手く行かない場合は、**wxMsw** をダウンロードして試すことをおすすめする。(**wxAll** と違っていて直されている場合がある。)</del>     * <del>例えば、Visual C++ のワークスペースでのビルドが上手く行かない場合は、**wxMsw** をダウンロードして試すことをおすすめする。(**wxAll** と違っていて直されている場合がある。)</del>
-  - Windows では wxWidgets-x.x.x.7z の内容を C:\ などに解凍する。+  - Windows では wxWidgets-x.x.x.7z の内容を C:\Libraries\ などに解凍する。
  
 ==== GitHub より clone する場合 ==== ==== GitHub より clone する場合 ====
 [[https://github.com/wxWidgets/wxWidgets|GitHub - wxWidgets/wxWidgets: Cross-Platform GUI Library - Report issues here: https://trac.wxwidgets.org/]] より clone する。\\ [[https://github.com/wxWidgets/wxWidgets|GitHub - wxWidgets/wxWidgets: Cross-Platform GUI Library - Report issues here: https://trac.wxwidgets.org/]] より clone する。\\
 <code> <code>
-$ git clone https://github.com/wxWidgets/wxWidgets.git+$ git clone --recurse-submodules https://github.com/wxWidgets/wxWidgets.git 
 +</code>\\ ※**--recurse-submodules** 無しで clone してしまった場合は以下のコマンドを実行する。\\ <code> 
 +> cd wxWidgets 
 +> git submodule update --init
 </code> </code>
 +
 ===== ビルド/インストール ===== ===== ビルド/インストール =====
 +
 ==== Linux でインストールする場合 ==== ==== Linux でインストールする場合 ====
 wxGTK2\\ wxGTK2\\
行 39: 行 44:
  
 ==== Linux でビルドする場合 ==== ==== Linux でビルドする場合 ====
 +静的リンク
 +<code>
 +$ cd wxWidgets
 +$ ./configure --disable-shared
 +$ make
 +</code>
 +動的リンク
 <code> <code>
 $ cd wxWidgets $ cd wxWidgets
行 45: 行 57:
 </code> </code>
  
-==== Windows 上の Visual C++ 2008 Express Edition でビルドする場合 ==== +==== Windows 10 上の Visual C++ 2019 でビルドする場合 ==== 
-  - wxWidgetsインルフォルダの include\wx\msw\setup.修正\\ +  - クバーの「ここに入力して検索」に **sysdm.cpl** 入力して Enter キーを押す。 
-    * 主な修正項目\\ **wxUSE_GLCANVAS** OpenGLサポート (デフォルト: 0[無効] → 修正後: 1[有効])\\ **wxUSE_ODBC** ODBC使用 (デフォルト: 0[使用しない] → 修正後: 1[使用する]) +  「システムのプロパティ」の「詳細設定」タブの [環境変数ボタンを押して「環境変数」画面を開く。 
-  - Visual C++ 2008 Express Edition起動して、wxWidgetsイールフォルダの build\msw\wx.dsw 開く。 +  「環境変数」画面の [システム環境変数」の [新規] ボタンを押して以下の環境変数を登録する。<code> 
-    プロジェクトの変換確認ダイアログボックスに対して[すべてはい]ボタンをクリック。\\ (wx.sln 成されるので、次回からは wx.sln を利用のこと。) +変数名: WXWIN 
-  - ツールバーの[ソリューション構成]にて[Unicode Debug]、または、[Unicode Release]に切り替える。 +変数値: C:\Libraries\wxWidgets 
-    * これは Static Library を構築する場合。 +</code> 
-    * Dynamic Link Library 生成る場合は、[DLL Unicode Debug]、または、[DLL Unicode Release]に切り替える。 +  - タスクバーの「ここに入力して検索」に cmd 入力して「コマドプロンプ「管理者として実行」する。 
-  - ソションエクプロラより[ソリューション 'wx']を右クリックして、[ソリューションのビル]クリックする。 +  - 「コマンドプロンプ」以下コマ入力する<code> 
-    * バージョン 2.8.9 をビルドしてみただが、一度目のビドは3つのプロジェクトでエラー発生する。\\ 二度目のビルドでその3つビルドされて正常完了とな。(恐らく依存関係設定おかしい。支障はないが...。)+> cd %WXWIN%\include\wx\msw\ 
 +> mklink setup.h setup0.h 
 +setup.h <<===>> setup0.h のシンボリック リンク成されました 
 +</code> 
 +  - 「スタト」「Visual Studio 2019」より「x86 Native Tools Command Prompt for VS 2019」または「x64 Native Tools Command Prompt for VS 2019」を起動して以下のコマンドを入力する。<code> 
 +> cd %WXWIN%\build\msw 
 +> nmake /f makefile.vc 
 +</code>※デフォルトデバッグ設定で静的ライブラリとして wxWidgets を構築する。\\ 
 +    * リリースビルドは以下のコマンド実行する。<code> 
 +> nmake /f makefile.vc BUILD=release 
 +</code> 
 +    * リリースビルドの DLL バョンは以下コマンドを実行する。\\ <code> 
 +> nmake /f makefile.vc BUILD=release SHARED=1 
 +</code>**TARGET_CPU=X64** を指定すると Win64 バージョンをビルドする。 
 +  - 以下ようにコンパイルが開始される。<code> 
 +Microsoft(R) Program Maintenance Utility Version 14.20.27305.0 
 +Copyright (C) Microsoft Corporation.  All rights reserved. 
 + 
 +        if not exist vc_mswud_x64 mkdir vc_mswud_x64 
 +        cl /c /nologo /TC /Fovc_mswud_x64\wxregex_regcomp.obj /MDd /DWIN32  /Zi /Fd..\..\lib\vc_x64_lib\wxregexud.pdb  /D_DEBUG /Od /D_CRT_SECURE_NO_DEPRECATE=1  /D_CRT_NON_CONFORMING_SWPRINTFS=1 /D_SCL_SECURE_NO_WARNINGS=1   /DNDEBUG /D_CRT_SECURE_NO_WARNINGS /I..\..\include  /I..\..\lib\vc_x64_lib\mswud /D__WXMSW__  /D_UNICODE    ..\..\src\regex\regcomp.c 
 +regcomp.c 
 +        cl /c /nologo /TC /Fovc_mswud_x64\wxregex_regexec.obj /MDd /DWIN32  /Zi /Fd..\..\lib\vc_x64_lib\wxregexud.pdb  /D_DEBUG /Od /D_CRT_SECURE_NO_DEPRECATE=1  /D_CRT_NON_CONFORMING_SWPRINTFS=1 /D_SCL_SECURE_NO_WARNINGS=1   /DNDEBUG /D_CRT_SECURE_NO_WARNINGS /I..\..\include  /I..\..\lib\vc_x64_lib\mswud /D__WXMSW__  /D_UNICODE    ..\..\src\regex\regexec.c 
 +regexec.c 
 +        cl /c /nologo /TC /Fovc_mswud_x64\wxregex_regerror.obj /MDd /DWIN32  /Zi /Fd..\..\lib\vc_x64_lib\wxregexud.pdb  /D_DEBUG /Od /D_CRT_SECURE_NO_DEPRECATE=1  /D_CRT_NON_CONFORMING_SWPRINTFS=1 /D_SCL_SECURE_NO_WARNINGS=1   /DNDEBUG /D_CRT_SECURE_NO_WARNINGS /I..\..\include  /I..\..\lib\vc_x64_lib\mswud /D__WXMSW__  /D_UNICODE    ..\..\src\regex\regerror.c 
 +regerror.c 
 +</code> 
 +  - ビルドが完了と以下出力得られる<code> 
 +include path: %WXWIN%\include;%WXWIN%\msvc 
 +library path(x86): %WXWIN%\lib\vc_lib 
 +library path(x64): %WXWIN%\lib\vc_x64_lib 
 +</code> 
 ==== サンプルアプリケーションのビルド ==== ==== サンプルアプリケーションのビルド ====
  以下の方法にて必要なサンプルのみをビルド/実行することができる。  以下の方法にて必要なサンプルのみをビルド/実行することができる。
-  - wxWidgetsインストールフォルダの samples\samples.dsw を開く。\\ (samples.sln が生成されるので、次回からは samples.sln 利用のこと。) +  - ター「Visual Studio 2019」より「x86 Native Tools Command Prompt for VS 2019」また「x64 Native Tools Command Prompt for VS 2019」起動して、以下コマ入力する。<code> 
-    * プロジェクトの変換確認ダイアログボックスに対して[すべてはい]ボタンをクリック。 +> cd %WXWIN%\samples 
-  - ツールバー[ソリューショ構成]にて[Unicode Debug]、または、[Unicode Release]に切り替える。 +> nmake /f makefile.vc 
-    * 上記のライブラリビルドする際に選択したものでなければビルドエラーとなるので注意。 +</code> 
-  - ビルド/実行したいアプリケーションのプロジェクトを右クリックし、[スタートアップ プロジェクトに設定]をクリック。 + サンプルアプリケーションの wxAUI デモの実行\\ 
-  - ツールバーの[デバッグ開始]をクリック。 + {{:c_cpp:wxwidgets_on_vc2019_wxaui_demo.png?800|サンプルwxAUIデモ}} 
-\\ +
- サンプルアプリケーションのwxAUIデモの実行\\ +
- {{:c_cpp:wxwidgets_on_vc2008_wxaui_demo.png?400|サンプルwxAUIデモ}}+
 === 参考文献 === === 参考文献 ===
  以下のサイトを参考にさせて頂きました。情報を公開して下さっている方々に感謝します。\\  以下のサイトを参考にさせて頂きました。情報を公開して下さっている方々に感謝します。\\
行 131: 行 172:
 ===== トラブルシューティング ===== ===== トラブルシューティング =====
  
-==== エラー: ‘wxOVERRIDE’ does not name a type; did you mean ‘wxEVT_IDLE’? が発生する ====+==== コンパイル時に「エラー: ‘wxOVERRIDE’ does not name a type; did you mean ‘wxEVT_IDLE’?が発生する ==== 
 +古い wxWidgwts では wxOVERRIDE が未定義である為に発生する。\\ 
 +最新のライブラリを使えば問題は解決するが、自分で wxOVERRIDE を定義する事で回避可能でどのバージョンの wxWidgets でもコンパイルが可能になる。\\
 <code> <code>
 sample.cpp:33:25: error: expected ';' at end of member declaration sample.cpp:33:25: error: expected ';' at end of member declaration
行 142: 行 185:
                            wxEVT_IDLE                            wxEVT_IDLE
 </code> </code>
 +エラーを回避するコードの例は以下のようになる。(wxWidgets/defs.hとほぼ同じ)
 +<file cpp Common.h>
 +/* オーバーライドキーワードのサポートを確認する */
 +#ifndef HAVE_OVERRIDE
 +    #if __cplusplus >= 201103L
 +        /* すべての C++11 コンパイラはそれを持つべきです */
 +        #define HAVE_OVERRIDE
 +    #elif wxCHECK_VISUALC_VERSION(11)
 +        /*
 +           VC++ はバージョン8以降で override キーワードをサポートしていますが、C++11 の
 +           サポートを示すものとして __cplusplus を定義していません(少なくとも 12 まで)ので、
 +           その場合は特別に処理してください。
 +
 +           また、キーワードはサポートされていますが、バージョン 8、9、10 で使用すると C4481
 +           コンパイラ警告 ("nonstandard extension used") が発生するため使用しないでください。
 +           気にしないのであれば、この警告を無効にして HAVE_OVERRIDE を事前定義することができます。
 +         */
 +        #define HAVE_OVERRIDE
 +    #elif WX_HAS_CLANG_FEATURE(cxx_override_control)
 +        #define HAVE_OVERRIDE
 +    #endif
 +
 +    #ifdef HAVE_OVERRIDE
 +        #define wxOVERRIDE override
 +    #else /*  !HAVE_OVERRIDE */
 +        #define wxOVERRIDE
 +    #endif /*  HAVE_OVERRIDE */
 +#endif /* !HAVE_OVERRIDE */
 +</file>
 +[[https://github.com/wxWidgets/wxWidgets/blob/master/include/wx/defs.h|wxWidgets/defs.h at master · wxWidgets/wxWidgets · GitHub]]\\
  
 ===== 参考文献 ===== ===== 参考文献 =====
  • c_cpp/wxwidgets.1549670356.txt.gz
  • 最終更新: 2019/05/18 02:23
  • (外部編集)