|
本サイトは移転しました。旧アドレスからのリダイレクトは2025年03月31日(月)まで有効です。
|
🛈 | ✖ |
ここまでのセットアップを統合開発環境で動作確認する。
コンソールアプリケーションとウィンドウズデスクトップアプリケーションのそれぞれ32ビット/64ビットについてビルド実行を動作確認する。一般情報としてビルドオプションの変更方法を追記してビルドエラーに備える。ウィザード生成プロジェクトをそのまま用いるためアプリケーションの実行は英語入出力となる。日本語入出力の確認はウィンドウズデスクトップアプリケーションについて動作確認(2)の国際化機能として実施する。コンソールアプリケーションの日本語入出力に興味の向きはビルドオプションを変更してご自身で挑戦いただきたい。
Code::Blocksを起動する。ワークスペースが開いていたら[File|Close workspace]して空白ワークスペースに戻す。左側[Management]ウィンドウ[Projects]ページツリービューのルートノードを右クリックし、コンテキストメニュー[Rename workspace]でワークスペース名をTestDriveに変更する。[File|Save workspace as]で空白ワークスペースをC:\Users\user\MinGW\TestDriveディレクトリにTestDrive.workspaceという名前で保存し、これを動作確認ワークスペースとする。
32ビットコンソールアプリケーションはCode::Blocks標準添付ウィザードで生成する。[File|New|Project]の[New from template]ダイアログ[Projects]ページからConsole applicationウィザードを起動し、順次以下のウィザードページに応答する。
ターゲット名をデフォルトから変更するのは後に64ビットターゲットを追加するためであり、ディレクトリ名をビルトイン変数$(TARGET_NAME)(Code::Blocks Manual 3.2.3 Build targets)で置き換えるのは複数ターゲットの出力が間違いなく混在しないようにするためである。ウィザードはこれらの設定を記憶し次回以降のデフォルトとする。
[Project|Build options]で[Project build options]ダイアログを開き左側ツリービューのルートノードConsole1を選択してプロジェクトオプションを修正する。[...|Compiler settings|CompilerFlags]でStatic linking [-static]にチェックを入れランタイムライブラリを静的リンクとする。動的リンクのままでも動作確認できるが静的リンクと決めたほうがトラブルは少ない。[OK]を押して[Project build options]ダイアログを閉じる。
[File|Save everything]で全ての変更を保存する。[Build|Select target|Debug32]を選び[Build|Build and run]でビルドしてアプリケーション実行、コマンドプロンプトが開いてHello world!が出力されるのを確認する。[Build|Select target|Release32]を選び同様の確認を行う。
64ビットコンソールアプリケーションは32ビットターゲットの修正ターゲットとしてプロジェクトに追加する。
[File|Save everything]で全ての変更を保存する。[Build|Select target|Debug64]を選び[Build|Build and run]でビルドしてアプリケーション実行、コマンドプロンプトが開いてHello world!が出力されるのを確認する。[Build|Select target|Release64]を選び同様の確認を行う。
32ビット/64ビットウィンドウズデスクトップアプリケーションは統合開発環境カスタマイズ(1)で新たに導入したウィザードで生成する。[File|New|Project]の[New from template]ダイアログ[Projects]ページからwxWidgets project (K1)ウィザードを起動し、順次以下のダイアログに応答する。
ウィザードはプロジェクトオプションStatic linking [-static]に既にチェックを入れている。[File|Save everything]で全ての変更を保存する。[Build|Select target|Debug32]を選び[Build|Build and run]でビルドしてアプリケーション実行する。アプリケーションのメインウィンドウが表示され、[Help|About]で[Welcome to]ダイアログが開きwxWidgetsバージョンが示され、[File|Quit]でアプリケーションを終了する。[Build|Select target|Release32]を選び同様の確認を行う。
前のステップで64ビットターゲットは既に定義されていて新たな追加は必要ない。
[Build|Select target|Debug64]を選び[Build|Build and run]でビルドしてアプリケーション実行する。アプリケーションのメインウィンドウが表示され、[Help|About]で[Welcome to]ダイアログが開きwxWidgetsバージョンが示され、[File|Quit]でアプリケーションを終了する。[Build|Select target|Release64]を選び同様の確認を行う。
Code::Blocksのビルドオプション設定方法を一般情報として記述する。[Project|Build options]で[Project build options]ダイアログを開く。左側ツリービューにはルートノードにプロジェクト、その子ノードに各ターゲットが表示される。プロジェクトノードを選択して設定するオプションをプロジェクトオプション、ターゲットノードを選択して設定するオプションをターゲットオプションとする。プロジェクトオプションは全てのターゲットに共通でターゲットオプションはそれに追加される。順番が問題となる配列オプションはプロジェクトオプションにターゲットオプションがポリシーに従い追加(無効/置換/前置/後置)される。以下にいくつかの配列オプションを例示する。
オプション | 入力コントロール | 追加ポリシー |
---|---|---|
インクルードディレクトリ | [...|Search directories|Compiler] | [...|Search directories|Compiler|Policy] |
ライブラリディレクトリ | [...|Search directories|Linker] | [...|Search directories|Linker|Policy] |
ライブラリファイル | [...|Linker settings|Link libraries] | [...|Linker settings|Policy] |
設定オプションの多くは[...|Selected compiler]で選択されるコンパイラに依存し、プロジェクトオプションコンパイラとターゲットオプションコンパイラが同一でないと矛盾を生じる。本サイト運用は両者がmingw-w64の32ビット/64ビットと異なる場合があるが、設定できるオプションは共通と見なせる。ビルドはターゲットオプションコンパイラが必ず用いられ、プロジェクトオプションコンパイラは共通オプション設定のための存在と言える。ただしエディタコード補完の定義済みマクロはプロジェクトコンパイラの定義が用いられる。
例えばウィザード生成のウィンドウズデスクトップアプリケーションで、ライブラリバージョンがウィザード作成時とビルド時に差異がある場合に関数未定義参照エラーが発生するかもしれない。さらに具体的に例えれば、サイトバージョン1.1.X.Xウィザードの生成プロジェクトを1.2.X.X環境でビルドすれば以下のエラーが報告される。
このようなエラーが発生した場合はメッセージを頼りに不足のライブラリファイルを推定して追加する。ライブラリファイルは標準ディレクトリ(C:\msys64\mingw32\libまたはC:\msys64\ming64\lib)に存在する。[Project|Build options]で[Project build options]ダイアログを開き、全ターゲットノード(Debug32、Release32、Debug64、Release64)の[...|Linker settings|Link libraries]に不足のライブラリファイルを追加する。本具体例では以下の二つを追加すれば良いが、この機会にウィザードも修正すれば万全であろう。
例えばコンソールアプリケーションを日本語入出力対応とするためにコンパイラ入力文字コードをシフトJISに変更する方法を記述する。[Project|Build options]で[Project build options]ダイアログを開き、変更するノード(プロジェクトノードあるいは特定のターゲットノード)を選択する。[...|Compiler settings|Other compiler options]のリスト末尾に-finput-charset=CP923を追加する。ダイアログを閉じて[Build|Rebuild]する。ビルドオプションの変更はソースコードの変更ではないため、[Build|Build]ではビルドされない点を留意する。