パソコンでプログラミングしよう ウィンドウズC++プログラミング環境の構築
1.6.3.6(15)
動作確認(3)

動作確認(2)以降のセットアップを動作確認する。

動作確認はwxWidgetsプロジェクトウィザード(K1)で新たなプロジェクトを作成して行う。これまで動作確認で用いたDesktop1プロジェクトの修正でも良いが比較対象としてそのままに残す。

外部情報

セットアップ手順

  1. プロジェクトの作成
  2. リポジトリの作成
  3. 動作確認用ファイルの作成と配置
  4. ウィザード生成ソースコードの修正
  5. バージョン番号の自動更新
  6. 国際化機能の追加
  7. ドキュメントの作成
  8. インストーラの作成
  9. マスターブランチの更新

プロジェクトの作成

最初にDesktop2プロジェクトを作成する。

  1. 統合開発環境Code::Blocksの[File|Open]で動作確認ワークスペース(C:\Users\user\MinGW\TestDrive\TestDrive.workspace)を開く。
  2. [File|New|Project]の[New from template]ダイアログ[Projects]ページからwxWidgets project (K1)ウィザードを起動する。
  3. 動作確認(1)のプロジェクトDesktop1と同じ手順でプロジェクトDesktop2を作成する。

リポジトリの作成

Git for WindowsにDesktop2のリポジトリを作成する。

  1. [File|Save everything]で全ての変更を保存する。
  2. [Tools|Git|Commit]で自作ツールの[KGitWVer]ダイアログを開く。
  3. [Commit]のテキストボックスに任意のコメント(例えば"リポジトリの作成")を入力して[OK]を押す。
  4. [Tool Output]ウィンドウが開き[Git/Commit]ページに以下が出力される。なお[Tool Output]ウィンドウはASCII文字しか表示できず日本語は盛大に文字化けする。
git rev-parse --git-dir:NG
----------------------------------------
fatal: not a git repository (or any of the parent directories): .git
Initialized empty Git repository in C:/Users/user/MinGW/TestDrive/Desktop2/.git/
git init:OK
----------------------------------------
git add -A:OK
----------------------------------------
[master (root-commit) ceddbb9] **日本語文字化け**
8 files changed, 445 insertions(+)
create mode 100644 Desktop2.cbp
create mode 100644 Desktop2App.cpp
create mode 100644 Desktop2App.h
create mode 100644 Desktop2Frame.cpp
create mode 100644 Desktop2Frame.h
create mode 100644 resource.rc
create mode 100644 wx_pch.h
create mode 100644 wxsmith/Desktop2Frame.wxs
git commit -m "**日本語文字化け**":OK
----------------------------------------
  1. [Tools|Git|Sourcetree]でSourcetreeを起動する。
  2. [File|Open]の[Select repository working folder to view in Sourcetree]ダイアログでDesktop2プロジェクトディレクトリ(C:\Users\user\MinGW\TestDrive\Desktop2)を選択する。
  3. Desktop2リポジトリを読み込む。サイドバー[WORKSPACE|History]でリポジトリが正しく作成されている事を確認する。
  4. 動作確認(2)同様にツールバー[Git-flow]の[Initialise repository for Git-flow]ダイアログをデフォルトのままに[OK]を押してdevelopブランチを作成する。

動作確認用ファイルの作成と配置

Desktop2プロジェクトのファイル配置をまとめ、動作確認に必要な追加ファイルと動作確認によるファイルを示す。追加ファイルのいくつかはDesktop1プロジェクトのコピーまたはコピー修正である。日本語を含む追加ファイルは全て文字コードをUTF-8とする。ウィザード生成ソースコード(Desktop2App.cpp、Desktop2App.h、Desktop2Frame.cpp、Desktop2Frame.h、resource.rc)の修正も必要だが、これらは次ステップで説明する。

ディレクトリ ファイル 内容 追加 生成 備考
...\TestDrive\Desktop2 Desktop2.cbp Code::Blocksプロジェクト
autoversion.dat バージョン番号データ Yes
version_macro.h バージョンマクロ定義インクルード Yes
Desktop2App.cpp アプリケーションクラスソースコード 修正
Desktop2App.h アプリケーションクラスインクルード 修正
Desktop2Frame.cpp メインウィンドウクラスソースコード 修正
Desktop2Frame.h メインウィンドウクラスインクルード 修正
wx_pch.h プリコンパイル対象インクルード
resource.rc ウィンドウズリソース 修正
├ bin messages.pot 翻訳テンプレート Yes
││ Desktop2.chm HTMLヘルプ Yes
│├ Debug32 Desktop2.exe 32ビット実行形式デバッグ版
│├ Release32 Desktop2.exe 32ビット実行形式リリース版
│├ Debug64 Desktop2.exe 64ビット実行形式デバッグ版
│├ Release64 Desktop2.exe 64ビット実行形式リリース版
│└ ja Desktop2.po 日本語テキスト形式翻訳 Yes
Desktop2.mo 日本語バイナリ形式翻訳 Yes
├ obj
│├ Debug32 *.o 32ビットオブジェクトデバッグ版
│├ Release32 *.o 32ビットオブジェクトリリース版
│├ Debug64 *.o 64ビットオブジェクトデバッグ版
│└ Release64 *.o 64ビットオブジェクトリリース版
├ wxsmith *.wxs wxSmithリソース
├ wx_pch.h.gch *_wx_pch_h_gch プリコンパイル済みヘッダ
├ doxygen Doxyfile ソースコード解析用Doxygen設定 Yes Desktop1修正
││ Doxyfile_winchm HTMLヘルプファイル用Doxygen設定 Yes Desktop1修正
││ Doxyfile_autoversion PROJECT_NUMBER定義Doxygen設定 Yes
││ my_header.html ヘッダHTML Yes Desktop1コピー
││ my_footer.html フッタHTML Yes Desktop1コピー
││ my_customstylesheet.css カスケードスタイルシート Yes Desktop1コピー
││ my_layout.xml レイアウト Yes Desktop1コピー
││ doxygen.log ソースコード解析用ログ出力 Yes
││ doxygen_winchm.log HTMLヘルプファイル用ログ出力 Yes
│├ html index.html ソースコード解析用HTMLトップページ Yes
││ *.html, *.js, *.cssなど ソースコード解析用HTML Yes
│├ html_winchm index.html HTMLヘルプファイル用HTMLトップページ Yes
││ *.html, *.js, *.cssなど HTMLヘルプファイル用HTML Yes
││ index.hhp HTMLヘルププロジェクト Yes
││ index.hhc HTMLヘルプ目次 Yes
││ index.hhk HTMLヘルプ索引 Yes
│└ winchm mainpage_winchm.md HTMLヘルプトップページ用原稿 Yes Desktop1コピー
├ archive Desktop2-X.X.X.X.zip アーカイブ Yes
├ innosetup InnoSetup.iss Inno Setupスクリプト Yes Desktop1修正
Desktop2-X.X.X.X.exe インストーラ Yes
└ autoversion-template version_macro.h バージョンマクロ定義インクルードテンプレート Yes
 └ doxygen Doxyfile_autoversion PROJECT_NUMBER定義Doxygen設定テンプレート Yes

追加ファイルのうちバージョンマクロ定義インクルードテンプレートファイル(autoversion-template\version_macro.h)をCode::Blocksプロジェクトに登録する。生成されるバージョンマクロ定義インクルードファイル(version_macro.h)は登録しない。

  1. [Project|Add files]の[Add files to project]ダイアログでautoversion-template\version_macro.hを選択し[開く]を押す。
  2. [Management]ウィンドウ[Projects]ページの[Desktop2]ノードに[...|Headers|autoversion-template|version_macro.h]が登録されたのを確認する。

追加ファイルを配置したら[Tools|Git|Commit]でGit for Windowsへコミットする。

  1. [File|Save everything]で全ての変更を保存する。
  2. [Tools|Git|Commit]で自作ツールの[KGitWVer]ダイアログを開く。
  3. [Commit]のテキストボックスに任意のコメント(例えば"動作確認用ファイルの作成と配置")を入力して[OK]を押す。
  4. [Tool Output]ウィンドウ[Git/Commit]ページ出力を確認する。
  5. Sourcetreeでリポジトリが更新されているのを確認する。

ウィザード生成ソースコードの修正

最初にHTMLヘルプファイルを表示させる[Help|Help]メニュー項目を追加する。手順は動作確認(2)のDesktop1と変わらない。

  1. [Management]ウィンドウ[Project]ページ[...|Desktop2Frame.wxs]ノードをダブルクリックしてwxSmithエディタにwxsリソースを読み込ませる。
  2. wxSmithエディタ上部ツールホルダーパネルのメニューバー(wxMenuBar)アイコンをダブルクリックして[MenuBar editor]ダイアログを開く。New Menuという新たなメニュー項目を作成して[...|About]ノードより上に移動して[OK]でダイアログを閉じる。
  3. [Management]ウィンドウ[Resources]ページ(wxSmithリソースマネージャ)のツリービューで[...|wxMenuBar:ManuBar1|Help|New Menu]ノードを選択してプロパティを変更する。
    プロパティ
    Label Help
    Help text Show help file of this application
    Is member チェックを外す
    Identifier idMenuHelp
  4. ツリービュー下のプロパティエディタをイベントエディタに切り替える。EVT_MENUのドロップダウンリスト-- Add new handler --を選択し[New handler]ダイアログで新しいハンドラ名OnHelpを入力して[OK]でダイアログを閉じる。Desktop2Frameクラスメンバ関数にOnHelpが追加される。
  5. [File|Save everything]で全ての変更を保存する。

リンクを参考にソースコードを修正する。

  1. Desktop2App.hDesktop2App.cppはDesktop1同様に国際化機能に必要なコードを追加する。
  2. Desktop2Frame.hはDesktop1同様にヘルプファイル表示に必要なコードを追加する。
  3. Desktop2Frame.cppはヘルプファイル表示に必要なコードを追加すると共に、[Help|About]の[Welcome to...]が統一管理されたバージョン番号情報を表示するように変更する。
  4. resource.rcはファイルメタデータに統一管理されたバージョン番号情報を加えて、エクスプローラのプロパティダイアログで表示できるようにする。

以下にビルドとアプリケーション実行を確認するが、最初にversion_macro.hをテンプレートファイルから生成する必要がある。

  1. [Build|Select target|Debug32]を選択する。
  2. [Tools|Autoversion|Not pre-increased]で自作ツールの[KAutoVer]ダイアログを開く。
  3. [Status|Software status]のDebug32を確認し[Do not update target files]チェックボックスを外して[OK]でダイアログを閉じる。

デフォルトで[Do not update target files]がチェックされている理由は次に設定するバージョン番号自動更新が不要ビルドを行わないようにするためで、本プロジェクトは未設定なのでチェックを外す。これでプロジェクトディレクトリにversion_macro.hが生成されてビルドできる。

  1. [Build|Build and run]を実行する。
  2. ビルド成功しアプリケーションが起動する。
  3. [Help|About]で[Welcome to...]ダイアログを表示しバージョン番号を確認する。[File|Quit]で終了する。
  4. エクスプローラでビルドされた実行形式ファイル(bin\Debug32\Desktop1.exe)を右クリックし[プロパティ]で[Desktop2.exeのプロパティ]ダイアログを開く。
  5. [詳細]ページの各プロパティにバージョン番号などの設定が反映されていることを確認し、[OK]で閉じる。

翻訳ファイルやHTMLヘルプファイルが未作成なので英語表記のままで[Help|Help]は何も表示しない。同様に他のターゲット(Release32、Debug64、Release64)もビルドできる。リビジョン番号を更新したDebug64ターゲットをビルド実行してみる。

  1. [Build|Select target|Debug64]を選択する。
  2. [Tools|Autoversion|Pre-increased|Revision number]でリビジョン番号が増加した[KAutoVer]を開く。
  3. [Status|Softwawre status]のDebug64を確認し[Do not update target files]を外して[OK]で閉じる。
  4. [Build|Build and run]でバージョン番号の更新などを確認する。

ソースコード修正を[Tools|Git|Commit]でGit for Windowsへコミットする。作成するブランチにバージョン番号タグを付けてみる。

  1. [File|Save everything]で全ての変更を保存する。
  2. [Tools|Git|Commit with|Tag]で[KGitWVer]ダイアログを開く。[Option|Tag label]が正しく設定されているのを確認する。
  3. [Commit]のテキストボックスに任意のコメント(例えば"ウィザード生成ソースコードの修正")を入力して[OK]を押す。
  4. [Tool Output]ウィンドウ[Git/Commit]ページ出力を確認する。
  5. Sourcetreeでリポジトリの新たなブランチにバージョン番号タグが付けられているのを確認する。

バージョン番号の自動更新

全てのターゲットにプレビルドステップを定義する。

  1. [Project|Build options]で[Project build options]ダイアログを開く。
  2. 左側ツリービューでターゲット(Debug32、Release32、Debug64、Release64)を順次選択し[Pre/post build steps]ページの[Pre-build steps]に以下を入力する。
    cmd /c $(#codeblocks.bin)\KUdCheck -t $(TARGET_NAME) [[ local t=GetProjectManager().GetActiveProject().GetBuildTarget(ReplaceMacros(_T("$(TARGET_NAME)")));for (local i=0;i<t.GetFilesCount();++i) {print(t.GetFile(i).relativeFilename+_T(" "));} ]] && $(#codeblocks.bin)\KAutoVer -s $(TARGET_NAME) -i 0.0.0.0(1) --silent || if not ERRORLEVEL 2 exit 1
  3. [OK]でダイアログを閉じる。

これでターゲットに合わせてバージョン番号ソフトウェアステータスが自動設定され、ビルドの度にビルド回数が1増加する。

  1. [Build|Select target|Debug32]を選択し[Build|Build and run]する。
  2. [Help|About]でバージョン番号とソフトウェアステータスを確認し終了する。
  3. これを他のターゲット(Release32、Debug64、Release64)でも確認する。
覚え書き
プレビルドステップは自作ツールKUdCheckを用いてファイル更新をチェックし、更新ある場合だけバージョン番号を更新する。この更新判断はCode::BlocksやGit for Windowsと異なり挙動が不一致となる場合がある。
  • プレビルドステップはターゲット毎にプロジェクト登録ファイルのタイムスタンプで判断する。
  • Code::Blocksはエディタの編集有無で判断する。
  • Git for Windowsは管理対象ファイルの内容で判断する。

国際化機能の追加

  1. [Tools|Gettext|Get]で翻訳対象文字列を取得し翻訳テンプレートファイル(messages.pot)とテキスト形式翻訳ファイル(Desktop2.po)を作成する。
  2. 自作ツール[KGetText]ダイアログがContinue to edit?と問いかけるので[はい]で応える。
  3. PoeditがDesktop2.poを読み込んで起動する。動作確認(2)同様に各文字列の翻訳テキストを定義する。
  4. [File|Save]してPoeditを終了する。Desktop2.poが更新されバイナリ形式翻訳(Desktop2.mo)ファイルが作成される。
  5. Code::Blocksの[Build|Run]でアプリケーション実行し表示文字列が翻訳されているのを確認する。

Git for Windowsにコミットする。今回は同時にアーカイブファイルも作成する。

  1. [File|Save everything]で全ての変更を保存する。
  2. [Tools|Git|Commit with|Archive]で[KGitWVer]ダイアログを開く。[Option|Create archive]が正しく設定されているのを確認する。
  3. [Commit]のテキストボックスに任意のコメント(例えば"国際化機能の追加")を入力して[OK]を押す。
  4. [Tool Output]ウィンドウ[Git/Commit]ページ出力を確認する。
  5. Sourcetreeでリポジトリ更新を確認する。archiveディレクトリにバージョン番号が付与されたアーカイブファイルが作成されているのを確認する。

ドキュメントの作成

  1. [Tools|Doxygen|Analyze sources]でソースコード解析ドキュメントをHTML型式で作成する。
  2. [Tools|Doxygen|Run HTML]でドキュメントを確認する。ページ右上のバージョン番号を確認する。
  3. [Tools|Doxygen|Create HTML Help]でヘルプファイルを作成する。
  4. [Build|Run]でアプリケーション実行し[Help|Help](翻訳後なので恐らく[ヘルプ|ヘルプ])でHTMLヘルプファイルを表示する。ページ右上のバージョン番号を確認する。

インストーラの作成

  1. [Tools|Inno Setup|Create installer]でインストーラを作成する。innosetupディレクトリにバージョン番号が付与されたインストーラが作成されているのを確認する。
  2. インストーラを実行しアプリケーションをインストールする。動作確認(2)同様にインストールされたアプリケーション実行を確認する。
  3. ウィンドウズ[設定|アプリ|アプリと機能]に正しいバージョン番号と共に表示されているのを確認して、アンインストールする。

マスターブランチの更新

masterブランチにdevelopブランチをマージする。

  1. [File|Save everything]で全ての変更を保存してCode::Blocksを終了する。
  2. Sourcetreeサイドバー[BRANCHES|master]をダブルクリックしてmasterブランチをチェックアウトする。
  3. [Repository|Merge]の[Pick a commit to merge into your current branch]ダイアログでdevelopブランチを選択して[OK]を押す。
  4. サイドバー[BRANCHES|develop]をダブルクリックしてカレントブランチをdevelopに戻す。