コードの生成とアプリケーションの構築
この章では、コード・ジェネレータと、コード・ジェネレータの使用したコードの生成、
生成コードへのユーザコードの追加、アプリケーションのMake、コンパイルしたアプリケ
ーションの実行について説明します。コード・ジェネレータ・ウィンドウとその要素の説明は、
を参照してください。
アプリケーションのMakeと実行
2つのシナリオを以下で説明します。1つめのシナリオは、1ステップで、アプリケーション
の構築と実行を行います。2つめのシナリオは、別々のステップで、コードの生成、コード
のコンパイル、およびアプリケーションの実行を行います。
どちらの場合も、保存していないプロジェクトを変更すると、ダイアログ・ボックスが
表示され、コード生成の処理を取消すか、またはプロジェクトの保存するの選択を、ユーザに
要求します。プロジェクトに保存する選択を行ったとき、以前に保存をしたことがない
場合は、プロジェクトを保存する場所を指定する必要があります。
1ステップでMakeおよび実行をするには
アプリケーション1ステップで構築および実行アプリケーションの実行1ステップでアプリケーション・ビルダの主ウィンドウの[ファイル]メニューから[コード・ジェネレータ]
を選択します。
コード・ジェネレータが表示されます。コード・ジェネレータ
[Make & 実行]をクリックし、コードの生成、アプリケーションの構築および実行を行います。
プロジェクトを保存し、すべてが正常にいくと、コード・ジェネレータの一番上にある
出力区画に多くのメッセージが表示されます。最後のメッセージは、「Running: ./[projectname] (実行中: ./[プロジェクト名])」
です。このメッセージが表示されるとアプリケーションが実行されます。
少なくとも、アプリケーション・ビルダの主ウィンドウは表示されています。アプリケーション
の起動時に表示しないように設定したウィンドウは、隠されます。ユーザが選んだ、
ユーザ・コードを必要としない機能に基づいて、アプリケーションは、様々な処理
(メニュー表示、接続のテスト、アイテム・ヘルプ表示など)を行います。
最終的には、アプリケーションを完成するには、コードを記述しなければなりません。
たとえば、接続エディタで指定する[関数呼び出し]コールバックは、置き換えなくては
なりません。詳細は、を参照してください。
コード作成、Make、および実行を別々に行うには
[コードの生成]をクリックして、現在のプロジェクトのコードを生成します。アプリケーションコードの生成アプリケーションのコードの生成
コード・ジェネレータが起動されると、コード・ジェネレータ・ウィンドウの一番上の
出力区画にメッセージが表示されます。最後に出力されるメッセージは、「Completed
successfully.(正常に完了しました。)」です。
Makefile、プロジェクト・ファイル、モジュール・ファイル、および2つのdtb_utilsファイル
を含む多くのファイルが生成されます。コード・ジェネレータ・ウィンドウの一番下に
ある端末区画で、生成されたファイルを見ることができます。
[Make]をクリックして、アプリケーションを構築します。アプリケーション構築アプリケーションの構築
アプリケーションがコンパイルされたとき、多くのメッセージが、出力区画に表示され
ます。最後に出力されるメッセージは、「Completed successfully.(正常に完了しました。)」です。
オブジェクト・ファイル、実行形式のアプリケーション・ファイルを含む数個のファイル
が生成され、これらのファイルには、ユーザがプロジェクトにつけた名前がついています。
[実行]をクリックして、アプリケーションを実行します。 アプリケーション実行アプリケーションの実行
コマンド行で実行形式のファイルを入力したときのように、アプリケーションが起動します。
[中止]をクリックすると、アプリケーションが終了します。 アプリケーション終了終了アプリケーション
これでアプリケーションは終了し、ウィンドウが閉じます。また、[中止]をクリックして、
コード・ジェネレータ、またはコード・ジェネレータ・ウィンドウで起動した make操作も
終了できます。
コード・ジェネレータのオプションを設定するにはコード・ジェネレータのオプションコード・ジェネレータオプション設定コード・ジェネレータのオプション
生成されるコード、またはその他のコード・ジェネレータ機能を決定するには、次のようにします。
アプリケーション・ビルダの主ウィンドウの[ファイル]メニューから[コード・ジェネレータ]を
選択します。
[オプション]メニューから[ジェネレータ]を選択すると、コード・ジェネレータ・オプション
・ダイアログ・ボックスが表示されます。
[コードの生成対象]オプション([プロジェクト全体]、[メインのみ]、
[特定のモジュールのみ]、[特定のモジュールとメイン])の1つを選択します。
[特定のモジュールのみ]、または[特定のモジュールとメイン]を選択すると、モジュールが
アクティブになります。コードを生成したいモジュールの名前を、リストからクリックします。
手作業で編集したコードを生成コードにマージしたくないときは、[マージ禁止]をクリック
します。
ユーザ・コードを破棄したくない場合は、[マージ禁止]をクリックしてはいけません。
必要であれば、メッセージを通知するオプションを選択します。
選択肢は、[正常メッセージの通知]、[サイレントで]、[冗長で]です。
必要であれば、[Make 引き数]を入力します。
[Make]または[Make&実行]をクリックしたときに、これらの変数は取り込まれます。
必要であれば、[実行時引き数]を入力します。
[実行]または[Make&実行]をクリックしたときに、これらの変数は取り込まれます。
[デフォルト設定にリセット]をクリックすると、すべてのフィールドにデフォルト値を設定ます。
[了解]または[適用]をクリックして変更を行います。
[了解]をクリックすると、オプション・ダイアログ・ボックスが終了します。
環境オプションを設定するにはコード・ジェネレータの環境オプション設定環境オプション
アプリケーション・ビルダの主ウィンドウの[ファイル]メニューから[コード・ジェネレータ]
を選択し、コード・ジェネレータ・ウィンドウを表示します。
[オプション]メニューから[環境]を選択して、環境オプション・ダイアログ・ボックスを表示します。
[変数名]テキスト・フィールドに変数を入力します。
たとえば、PATH環境変数を変更するとします。
[取得]をクリックして、[変数名]に変数の現在の値を表示します。
変数の値が、[値]区画に表示されます。
[値]を変更して、[設定]をクリックし、変数の値を変更します。
この変更は、アプリケーション・ビルダのセッションのみに適用されます。
[リセット]をクリックすると、[値]がアプリケーション・ビルダのセッション外の値にリセット
されます。
[キャンセル]をクリックして、ダイアログ・ボックスを終了します。
コマンド行からコードを生成するには
コマンド行からアプリケーション・ビルダのコードを生成するには、dtcodegenを実行します。使用方法は以下のとおりです。
使用方法: dtcodegen [options
] [project-file] [
module-file [module-file] ...]
コードは、コマンド行で指定した各モジュール、またはプロジェクト内のすべてのモジュール
に対して生成されます。モジュールを指定しないと、プロジェクトのすべてのモジュールに対して
生成されます。プロジェクトファイルが指定されていないときは、指定したモジュールを
含むプロジェクトが、現在のディレクトリから検索されます。
拡張子.bipを持つファイルはBILプロジェクト・ファイルとみなされ、
拡張子.bixをもつファイルはカプセル化されたBILファイルとしてみなされます。
拡張子.bilをもつファイルは、BILモジュール・ファイルとみなされます。
オプション(* はデフォルト、+ はプロジェクト・ファイルを持たないデフォルト)
-help (-h)
ヘルプ・メッセージを表示します。
-main
main()を含むファイルを記述します。
-changed
変更されたファイルのみを生成します。
* -merge
生成された_stubs.cファイルと以前のバージョンをマージします。
-nomerge
既存および新規stubsファイルをマージしません。
* -project (-p)
コードの生成対象となるプロジェクトを指定します。
-noproject (-np)
プロジェクトの設定にデフォルトを使用し、プロジェクト・ファイルを無視します。
+ -showall
アプリケーションが起動時にすべてのウィンドウを表示(マップ)します。
* -noshowall
アプリケーションが初期に表示するように指定したウィンドウを表示(マップ)します。
-silent (-s)
サイレント・モードです。メッセージは記述されません。
-verbose (-v)
冗長モードです。詳細な経過メッセージを出力します。
生成コードへのユーザ・コードの追加
コード・ジェネレータの[コードの生成]をクリックするか、またはコマンド行から
dtcodegenを実行してインタフェースのコードを生成すると、プロジェクト・フォルダに
多数のプロジェクトが作成されます。たとえば、プロジェクトが 「test」という名で、
「mod1」という名の1つのモジュールを持っている場合は、以下のファイルが生成されます。
Makefile
(他のプラットフォームのMakefilesを含めます)
dtb_utils.c
dtb_utils.h
mod1.bil (モジュール・ファイル)
mod1_stubs.c
mod1_ui.c
mod1_ui.h
test.bip (プロジェクト・ファイル)
test.c
test.h
Test (リソース・ファイル)
接続エディタで[関数呼び出し]または[実行コード]接続を行うと、これらの接続は、生成
コードに反映されます。生成コード内で、ユーザによって修正可能なすべての領域には、
次のような形式のコメントがつきます。
/* DTB_USER_CODE START */
/* DTB_USER_CODE_END */
STARTとENDコメントの間の領域は、「ユーザ・セグメント」とみなされます。
任意のテキスト(Cのコードではないものであっても)ユーザ・セグメント内に追加する
ことができます。コード・ジェネレータは、このコードを、次期以降のすべてのバージョン
で保持します。各ユーザ・セグメントは、そのセグメントに追加されるべきコード型、
またはセグメントが実行されるときのアプリケーションの状態を促すコメントではじまり
ます。これらの提示は、純粋な情報であって、無視されることがあります。
アプリケーション・ビルダとコード・ジェネレータのどちらも、追加されたコードが正当な
Cコードであることを確かめることはできません。検証することはできません。変更した
ファイルが、ユーザのコンパイラで満足な処理がなされるかどうかは、ユーザの責任になります。
手作業で編集したすべてのコードを破棄するには、コード・ジェネレータ・ウィンドウの
オプション・ダイアログから[マージ禁止]を選択するか、またはdtcodegenを-nomerge
オプションをつけて実行します。これは、多くの作業が失われる可能性があるので、非常に
注意して行うべきです。
どんな環境においても、生成されたコメントを修正すべきではありません。生成された
コメントが修正されると、コード生成に失敗し、結果ファイルがコンパイルできない可能性
があります。そのような誤りからの復旧を助けるために、.BAK拡張子を
持つバックアップ・ファイルが現在のディレクトリに保存されます。
ユーザ・コード・セグメントはコード内の重要な箇所にあり、生成されたアプリケーション
のカスタマイズを容易にします。main()に関連するすべてのコード
とアプリケーション全体のデータ及び構造体は、<projectname>.hと<projectname>.cで
定義されています。これらのファイルでは、フィールドがアプリケーションのXtリソース
・データ構造体に追加され、開発者が定義した新しいデータ型と変数が追加されます。
そしてアプリケーションの起動の手続きが修正されます。
各<modulename>_stubs.cファイルは、生成された接続の効果を修正するユーザ・セグメントを
含んでいます。ユーザ・コードは、自動生成されたコードの実行前と後に追加されます。
さらに、各ファイルの始まりには、カスタム・ヘッダまたは著作権表示を追加するのに
使用できるユーザ・セグメントがあります。