WxWidgetsツールライブラリ。 組立

投稿(ニュース) wxWidgetsの続き 些細なことですが、素晴らしい 、クッキーをキャッチします。



リソースからの画像: ru.wikipedia.org 、著者:ブライアン・ペティ。

Wikiからの抜粋: wxWidgetsは、ソースコードレベルでクロスプラットフォームアプリケーションを開発するための、特にグラフィカルユーザーインターフェイス (GUI)を構築するため オープンソースツールの クロスプラットフォーム ライブラリです



ライブラリには、グラフィックイメージ、HTML、XMLドキュメント、アーカイブ、ファイルシステム、プロセス、印刷サブシステム、マルチメディア、ネットワーク、マルチスレッドの編成、デバッグ、ダンプの送信などのツールを操作するための一連のクラスがあります。


注意! 猫のトラフィックの下で!



3年前、私は上記のライブラリを使用したクロスプラットフォームプログラミングに興味を持ちました。 このライブラリを作成するたびに、多くの問題が発生しました。 問題は、ライブラリに重大なバグがあるという事実とは関係ありませんでしたが、コンパイル(アセンブリ)を必要とするこのようなツールを使用する場合は、付随する文献に注意を払う必要があるという事実と関係がありました。

理解できる言語で話すには、マニュアル、 readme-



FAQ



などを注意深く読む必要がありreadme-



...



ネットワークでのwxWidgets



構築と使用に関する記事は十分にありますが、経験を共有することが必要だと考えています。肯定的な結果につながる手順を説明し、プロジェクトでwxWidgets



を使用し始めている開発者がすくいを少なくするために何が起こっているのかを説明します。このライブラリのすべての機能を使用するようにすぐに切り替えました。

それでは、行きましょう。

ライブラリをWindows 7 Professional x32 SP1



オペレーティングシステムでビルドします。 他のOS



に関しては、 Ubuntu Desktop 12.04



用のwxWidgets



のアセンブリはそれほど難しくなく、すべてが順調に進んでいます。 GNU / Linuxでビルドするには、 このマニュアルを使用できます。



IDE (コードエディターおよびビルドオートメーション)として、 Code :: Blocksを使用します。 彼についてはすでに多くの人が聞いていると思うので、詳細には触れません。 C::B



は、大規模なアプリケーションを作成するのに十分な強力なツールであり、 wxWidgets



ツールwxWidgets



を使用するように直接「調整」されていることをwxWidgets



ます。 このライブラリを使用して、それ自体を組み立てました。



1)コンパイラー、デバッグツール、およびプリセットのインストール:

デバッグツール(



)は通常、コンパイラーと共にデ​​フォルトでインストールされますGCC



などの場合、これは控えめな名前のGDB



持つファイルです。



FAQ:初心者開発者が最初に直面するレーキは、ライブラリのビルドに使用されるコンパイラの誤ったインストールです。 ほとんどは、実際にWindows



wxWidgets



を開発するTDM-GCC



代わりにMinGW



をインストールしWindows



リンク TDM-GCC



は、 mingw



用にコンパイルされた新しいgcc



リリースのアルファ版mingw





mingw



の現在の公式リリースには、 mingw



開発者がmingw



前のgcc 3



以降のgcc



バージョンがmingw



れています。 そのため、開発者の1人が新しいgcc



構築を開始し、インストールされたmingw



gcc



を置き換えるように設計されたパッケージをレイアウトしmingw



。 現在、 gcc 4.5



mingw



http://sourceforge.net/downloads/mingw/MinGW/BaseSystem/GCC/Version4/ xsでも利用できます。


MinGW



インストールすると、ライブラリをビルドできますが、非常に低い確率で、おそらくアセンブリの最後に、数分待った後、次のようなエラーメッセージが表示されることに注意してください。

if not exist ..\..\lib\gcc_lib\mswud mkdir ..\..\lib\gcc_lib\mswud

g++ -c -o gcc_mswud\monolib_treectrl.o -g -O0 -mthreads -DHAVE_W32API_H -D__WXMSW__ -D_UNICODE -I..\..\lib\gcc_lib\mswud -I..\..\include -W -Wall -DWXBUILDING -I..\..\src\tiff\libtiff -I..\..\src\jpeg -I..\..\src\png -I..\..\src\zlib -I..\..\src\regex -I..\..\src\expat\lib -I..\..\src\stc\scintilla\include -I..\..\src\stc\scintilla\lexlib -I..\..\src\stc\scintilla\src -D__WX__ -DSCI_LEXER -DLINK_LEXERS -DwxUSE_BASE=1 -Wno-ctor-dtor-privacy -MTgcc_mswud\monolib_treectrl.o -MFgcc_mswud\monolib_treectrl.od -MD -MP ../../src/msw/treectrl.cpp

makefile.gcc:9395: recipe for target 'gcc_mswud\monolib_treectrl.o' failed










ダウンロードセクションの公式TDM-GCC



コンパイラWebサイトにアクセスし、オペレーティングシステムのビット深度( x32



またはx64



)に対応する最新の安定バージョンをダウンロードしてインストールします。 この場合、これはtdm-gcc-4.8.1-3.exe



です。

さらに、標準手順:インストールウィザードを実行し、デフォルトオプションでコンパイラをインストールします。



ヒント:プログラム、ライブラリ、パッケージの解凍などをインストールする場合は、プログラムインストールウィザードのデフォルト設定を使用することをお勧めします。 私を信じて、これは図書館やプログラムの周りのタンバリンと一緒にはるかに少ない心配、そして少ないダンスを引き起こします。 これは、ライブラリ、プログラム、およびすべての種類のコンパイラに適用されます。




コンパイラのセットアップは、バイナリコンパイラアセンブリへのパスをシステム環境変数Pathに追加することで構成されます(デフォルトのインストールウィザードがそうしなかった場合)。 通常、これは次のとおりですC:\TDM-GCC-32\bin



C:\



ドライブのルートディレクトリがインストール(アンパック)ディレクトリとして選択されている場合。



チェック:ヘルスチェックは次のアクションで構成されます:コマンドライン( CMD



)を実行し、単にコマンドを実行します: mingw32-make -v



それぞれ、リンカーのmake buildのバージョンを確認します。 次のようなものが表示されます。



2) wxWidgets



ダウンロード、解凍、ビルドしwxWidgets





ダウンロードセクションのwxWidgets



公式サイトにアクセスし、 OS Windows



ライブラリの最新の安定バージョンをダウンロードして解凍しOS Windows



。 私たちの場合、これはwxMSW-Setup-3.0.0.exe



Windows Installer



)です。

さらに、標準手順:アンパックウィザードを実行し、デフォルトオプションでライブラリをアンパックします。

コンパイラの事前設定では、 WXWIN



システム環境WXWIN



追加しWXWIN



。これには、ライブラリのルートディレクトリへのパスが含まれます。 通常、これは次のとおりですC:\wxWidgets-3.0.0



C:\



ドライブのルートディレクトリがインストール(アンパック)ディレクトリとして選択されている場合。



実際に組み立てに進みます。 コマンドライン( CMD



)を起動し、次のコマンドを順番に実行します(それぞれの完了を待っています):

cd %WXWIN%\build\msw





mingw32-make -f makefile.gcc clean





mingw32-make -f makefile.gcc BUILD=debug SHARED=0 MONOLITHIC=0 UNICODE=1 WXUNIV=0





mingw32-make -f makefile.gcc BUILD=release SHARED=0 MONOLITHIC=0 UNICODE=1 WXUNIV=0





通常、ビルドオプションの数は指定された数を超えません。

これらのオプションの目的を分析しましょう。

BUILD



モードのライブラリアセンブリ: debug



(デバッグ)またはrelease



(アプリケーションのリリースバージョン)。

SHARED



ライブラリアセンブリタイプ:0- static



静的アセンブリ、1- dynamic



動的アセンブリ。

MONOLITHIC



-すべてのライブラリを1つに収集しますMONOLITHIC



はい、0-いいえ、ライブラリを理解する最初の段階で便利です。

UNICODE



-Unicodeサポート:1-はい、0-いいえ。

WXUNIV



すべてのOS



共通のインターフェース要素を収集します:1-はい、0-いいえ。 (または、これらの要素が欠落しているオペレーティングシステム用の独自のコントロールを組み立てます)。


ビルドプロセスは次のスクリーンショットのようになります。





3) IDE Code::Blocks



ダウンロード、インストール、構成IDE Code::Blocks





ダウンロードセクションのCode::Blocks



プログラムの公式サイトにアクセスし、 OS Windows



プログラムの最新の安定したバイナリリリースをダウンロードしてインストールしOS Windows



。 私たちの場合、これはcodeblocks-13.12-setup.exe



です。 コンパイラなしでバージョンをダウンロードする必要があります。 コンパイラを以前にインストールしました。ほとんどの場合、 C::B



付属する「新しい」コンパイラですC::B







FAQ、注: codeblocks-13.12mingw-setup.exeファイルには、TDM-GCC(バージョン4.7.1、32ビット)のGCCコンパイラーとGDBデバッガーが含まれています。 codeblocks-13.12mingw-setup-TDM-GCC-481.exeファイルには、TDM-GCCコンパイラ、バージョン4.8.1、32ビットが含まれています。 v4.7.1は堅固です(C :: Bのコンパイルに使用)が、v4.8.1は便宜上提供されていますが、このバージョンにはCode :: Blocksのコンパイルに関連する既知のバグがいくつかあります。



不明な場合は、「codeblocks-13.12mingw-setup.exe」を使用してください!


注:合計コンパイル時間は、平均で約30〜40分かかります。 はい、ライブラリはそれほど小さくなく、クラスがたくさんあります。


次に、標準の手順でインストールウィザードを実行し、デフォルトオプションでプログラムをインストールします。



開発環境の設定は、デフォルトのコンパイラの設定になります。 通常、 C::B



最初の開始時に、見つかったすべてからメインコンパイラを選択するダイアログ( TDM-GCC



選択)が表示されますが、このダイアログが表示されない場合があります。 次に、 C::B



を起動し、メインメニュー項目からコンパイラ設定に移動します。 Settings-->Compiler : Toolchain executables



チェーンのSettings-->Compiler : Toolchain executables



と、 C::B



を構成するスクリーンショット付きのアナロジー



チェック:開発環境の作業環境をチェックし、コンパイラの正しい構成を確認するには、次のようにC::B



でテストコンソールプロジェクトを作成する必要があります。

1) C::B



実行します(以前に実行されていない場合)。

2)メニュー項目に移動します: File-->New-->Project



開いたダイアログ( Project



)のProject



Console application



を選択し、[ Go



]ボタンをクリックします。

3)プロジェクトプリセットダイアログのプロンプトに従い、プロジェクトパラメータ(名前、場所など)を設定し、[ Next



]ボタンをクリックしてから[ Finish



];

プロジェクトコードエディターが開きました。 そうでない場合は、メインメニュー項目を選択します: View-->Manager



View-->Toolbars-->Compiler



main.cpp



マネージャーツリーでソースコードを開き、

このようなコードがあるはずです:



必要に応じて編集します。


4)メインメニュー項目を選択します: Build-->Build and Run



、コンパイルされたアプリケーションを確認します:





4) wxWidgets



を使用してテストプロジェクトを作成します。


C::B



が開始されていない場合は開始し、メインメニュー項目に移動します:作成されたプロジェクトのすべてのタイプのFile-->New-->Projects



wxWidgets project



選択し、[ Go



]ボタンをクリックします。



プロジェクトの事前設定の表示されたウィンドウで、プロンプトに従ってください:

1)[ Next



]ボタンをクリックします。



2) wxWidgets 3.0.x



で使用するライブラリのタイプを選択し、[ Next



]ボタンをクリックします。



3)プロジェクトパラメータ名、ソースへのパスなどを設定し、[ Next



]ボタンをクリックします。



4)プロジェクトの作成者を設定し(これはスキップできます)、[ Next



]ボタンをクリックします。

5) wxSmith



フォームwxSmith



を選択します( wxFormBuilder



はプレインストールされていないため)。また、作成するFrame Based



アプリケーションのタイプを選択し、[ Next



]ボタンをクリックします。



6)ローカル変数に$(WXWIN)



$(wx)



代わりに$(WXWIN)



を設定し、[ Next



]ボタンをクリックします。



7)コンパイラ(通常はデフォルト)を選択して[ Next



]ボタンをクリックします。



8)アセンブリの場合(モノリシックではなく静的)、次のウィンドウのパラメーターは次のようになります。



[ Next



]ボタンをクリックして、ダイアログに同意します。

9)作業に必要なクラスを選択します。

アセンブリの方法によっては、静的-動的、モノリシック、および次のウィンドウがないかどうかが異なります。



[ Finish



]ボタンをクリックします。


グローバルプロジェクト変数は、次のように構成する必要があります( Settings-->Global variables



):





プロジェクト設定は次のようになります( Project-->Build options



):

Project build options



ウィンドウ( wx_test



)[ Compiler settings - Other options



タブCompiler settings - Other options



]:

-pipe

-mthreads

-Winvalid-pch

-include wx_pch.h






Project build options



ウィンドウ( wx_test



)[ Compiler settings - Other options



タブCompiler settings - Other options



]:

__GNUWIN32__

__WXMSW__

wxUSE_UNICODE

WX_PRECOMP








Project build options



ウィンドウ( wx_test



)[ Linker settings



タブ]:





Project build options



ウィンドウ( wx_test



)[ Search directories - Compiler Resource compiler



タブのSearch directories - Compiler Resource compiler



]:

$(WXWIN)\include







Project build options



Debug



)ウィンドウ[ Linker settings



タブ]:





Project build options



Debug



)ウィンドウ[ Search directories - Compiler Resource compiler



タブ]:

$(WXWIN)\lib\gcc_lib\mswud







Project build options



Debug



)ウィンドウ[ Search directories - Linker



]:

$(WXWIN)\lib\gcc_lib







Project build options



Release



)ウィンドウ[ Linker settings



タブ]:





Project build options



Release



)ウィンドウ[ Search directories - Compiler Resource compiler



タブ]:

$(WXWIN)\lib\gcc_lib\mswu







Project build options



Release



)ウィンドウ[ Search directories - Linker



]:

$(WXWIN)\lib\gcc_lib







次に、プロジェクトProject build options



設定プロジェクトProject build options



オプションの[



]ボタンをクリックして、設定を保存します。



アプリケーションをコンパイル(コンパイル)します( Build --> Build and run



):





よくある質問
よくある質問:

質問/問題:

システムパスを設定してください!

回答/解決策:

パスの設定(WXWIN):

C:\ wxWidgets-2.9.4




質問/問題:

存在しない場合gcc_mswud mkdir gcc_mswud

process_begin:CreateProcess(NULL、-c "存在しない場合gcc_mswud mkdir gcc_mswud"、...)が失敗しました。

make(e = 2):= xєЄЄєЇ。

mingw32-make:[gcc_mswud]エラー2(無視)

存在しない場合.. \ .. \ lib \ gcc_lib mkdir .. \ .. \ lib \ gcc_lib

process_begin:CreateProcess(NULL、-c "存在しない場合.. \ .. \ lib \ gcc_lib mkdir .. \ .. \ lib \ gcc_

lib "、...)が失敗しました。

make(e = 2):= xєЄЄєЇ。

mingw32-make:*** [.. \ .. \ lib \ gcc_lib]エラー2

回答/解決策:

cmdを実行:set PATH = c:\ mingw \ bin




質問/問題:

CodeBlocks wxWidgetsの場所:

回答/解決策:

$(#wx)から$(WXWIN)




質問/問題:

グローバル変数版

設定->コンパイラおよびデバッガ->コンパイラ設定タブ->コンパイラオプション

回答/解決策:

ベース:C:\ wxWidgets-2.9.4

include:C:\ wxWidgets-2.9.4 \ include

lib:C:\ wxWidgets-2.9.4 \ lib

cflags: `wx-config --cflags`

lflags: `wx-config --libs`

その他のオプション:

`wx-config --cxxflags`

`wx-config --cflags`

`wx-config --libs`



方法については。 一般に、Code :: BlocksでwxWidgetsプロジェクトを作成すると、ヘッダーとライブラリをリストする代わりに、設定にコマンドが表示されることがわかります。

`wx-config --cflags`-コンパイラー設定

`wx-config --libs`-リンカー設定

so:wx-configはスクリプトです。 これらのコマンドを通常のコンソールに入力すると、一連のフラグとファイルが生成されることがわかります。 wx-configにはヘルプがあります:wx-config --help。 このスクリプトの呼び出しのすべてのバリエーションを説明しています。 静的オプションに注意してください。




種類Cのエラー:\ wxWidgets-3.0.0 \ include \ wx \ platform.h | 189 |致命的なエラー:wx / setup.h:そのようなファイルまたはディレクトリがありません|

解決策は次のとおりです。

プロジェクト->ビルドオプション...

デバッグ(検索ディレクトリ)

$(WXWIN)\ lib \ gcc_lib \ mswud <-> $(WXWIN)\ lib \ gcc_dll \ mswud




トラブルもあります。 たとえば、ルーラーは次のエラーを生成する場合があります。



rem gcc_mswudll \ monodll_xh_combo.o:ファイルが認識されません:メモリが使い果たされました

rem collect2.exe:エラー:ldが1つの終了ステータスを返しました

rem mingw32-make.exe:*** [.. \ .. \ lib \ gcc_dll \ wxmsw28u_gcc.dll]エラー1



メモリ不足のためにモノリシックダイナミックライブラリを構築するときに、一部の32ビットプラットフォームで表示されます。 リンカはx86アーキテクチャ用に構築されているため、x86_64アーキテクチャでも2GBを超えるアドレスを使用できません。 したがって、通常、コンパイラの変更は役に立たず、MinGW4.4.1TDM、MinGW4.6.xファミリ全体、およびMinGW4.7.0も試行されますが、ネットワークにはTDM-GCC 4.5.2 sjljの下で収集された情報があります。



この場合にコンパイルするには、コンパイラオプション-fno-keep-inline-dllexportを指定する必要があります。



mingw32-make -f makefile.gcc CXXFLAGS = "-fno-keep-inline-dllexport" BUILD =リリースSHARED = 1モノリシック= 1 UNICODE = 1



リンカーに--large-address-awareオプションを使用することもできます(コンパイラーも使用できます)が、OSを構成する必要があります。



モノリシックアセンブリを使用せずに問題を回避することも、モノリシックアセンブリ用の動的ライブラリの作成を中止することにより、このエラーなしで静的ライブラリを収集することもできます。






更新:

並べ替えのエラー:このファイルには、ISO C ++のコンパイラとライブラリのサポートが必要です

2011標準 このサポートは現在実験的であり、-std = c ++ 11または-std = gnu ++ 11コンパイラオプションです。

このファイルには、コンパイラとライブラリのサポートが必要です...



これらは、ライブラリをビルドするときにオプションを明示的に指定することで解決されます(オプションを追加):

CXXFLAGS = "-std = gnu ++ 11"









Upd1:おそらく最新のMinGWリリースではバグが修正され、指定されたコンパイラーを使用して安全に収集できるようになり、同じ(説明された)ルールを順守しています。



P /S。

この投稿は、プログラマーの初心者を主な対象としており、究極の真実であると主張するものではありません。

次の投稿では、 OpenCVコンピュータービジョンライブラリを「正しく」アセンブルする方法について説明します



ご清聴ありがとうございました。



All Articles