コードの生成とアプリケーションの構築 この章では、コード・ジェネレータと、コード・ジェネレータの使用したコードの生成、 生成コードへのユーザコードの追加、アプリケーションのMake、コンパイルしたアプリケ ーションの実行について説明します。コード・ジェネレータ・ウィンドウとその要素の説明は、 を参照してください。 アプリケーションのMakeと実行 2つのシナリオを以下で説明します。1つめのシナリオは、1ステップで、アプリケーション の構築と実行を行います。2つめのシナリオは、別々のステップで、コードの生成、コード のコンパイル、およびアプリケーションの実行を行います。 どちらの場合も、保存していないプロジェクトを変更すると、ダイアログ・ボックスが 表示され、コード生成の処理を取消すか、またはプロジェクトの保存するの選択を、ユーザに 要求します。プロジェクトに保存する選択を行ったとき、以前に保存をしたことがない 場合は、プロジェクトを保存する場所を指定する必要があります。 1ステップでMakeおよび実行をするには アプリケーション1ステップで構築および実行アプリケーションの実行1ステップでアプリケーション・ビルダの主ウィンドウの[ファイル]メニューから[コード・ジェネレータ] を選択します。 コード・ジェネレータが表示されます。コード・ジェネレータ [Make & 実行]をクリックし、コードの生成、アプリケーションの構築および実行を行います。 プロジェクトを保存し、すべてが正常にいくと、コード・ジェネレータの一番上にある 出力区画に多くのメッセージが表示されます。最後のメッセージは、「Running: ./[projectname] (実行中: ./[プロジェクト名])」 です。このメッセージが表示されるとアプリケーションが実行されます。 少なくとも、アプリケーション・ビルダの主ウィンドウは表示されています。アプリケーション の起動時に表示しないように設定したウィンドウは、隠されます。ユーザが選んだ、 ユーザ・コードを必要としない機能に基づいて、アプリケーションは、様々な処理 (メニュー表示、接続のテスト、アイテム・ヘルプ表示など)を行います。 最終的には、アプリケーションを完成するには、コードを記述しなければなりません。 たとえば、接続エディタで指定する[関数呼び出し]コールバックは、置き換えなくては なりません。詳細は、を参照してください。 コード作成、Make、および実行を別々に行うには [コードの生成]をクリックして、現在のプロジェクトのコードを生成します。アプリケーションコードの生成アプリケーションのコードの生成 コード・ジェネレータが起動されると、コード・ジェネレータ・ウィンドウの一番上の 出力区画にメッセージが表示されます。最後に出力されるメッセージは、「Completed successfully.(正常に完了しました。)」です。 Makefile、プロジェクト・ファイル、モジュール・ファイル、および2つのdtb_utilsファイル を含む多くのファイルが生成されます。コード・ジェネレータ・ウィンドウの一番下に ある端末区画で、生成されたファイルを見ることができます。 [Make]をクリックして、アプリケーションを構築します。アプリケーション構築アプリケーションの構築 アプリケーションがコンパイルされたとき、多くのメッセージが、出力区画に表示され ます。最後に出力されるメッセージは、「Completed successfully.(正常に完了しました。)」です。 オブジェクト・ファイル、実行形式のアプリケーション・ファイルを含む数個のファイル が生成され、これらのファイルには、ユーザがプロジェクトにつけた名前がついています。 [実行]をクリックして、アプリケーションを実行します。 アプリケーション実行アプリケーションの実行 コマンド行で実行形式のファイルを入力したときのように、アプリケーションが起動します。 [中止]をクリックすると、アプリケーションが終了します。 アプリケーション終了終了アプリケーション これでアプリケーションは終了し、ウィンドウが閉じます。また、[中止]をクリックして、 コード・ジェネレータ、またはコード・ジェネレータ・ウィンドウで起動した make操作も 終了できます。 コード・ジェネレータのオプションを設定するには<indexterm><primary>コード・ジェネレータのオプション</primary></indexterm><indexterm><primary>コード・ジェネレータ</primary><secondary>オプション</secondary></indexterm><indexterm><primary>設定</primary><secondary>コード・ジェネレータのオプション</secondary></indexterm> 生成されるコード、またはその他のコード・ジェネレータ機能を決定するには、次のようにします。 アプリケーション・ビルダの主ウィンドウの[ファイル]メニューから[コード・ジェネレータ]を 選択します。 [オプション]メニューから[ジェネレータ]を選択すると、コード・ジェネレータ・オプション ・ダイアログ・ボックスが表示されます。 [コードの生成対象]オプション([プロジェクト全体]、[メインのみ]、 [特定のモジュールのみ]、[特定のモジュールとメイン])の1つを選択します。 [特定のモジュールのみ]、または[特定のモジュールとメイン]を選択すると、モジュールが アクティブになります。コードを生成したいモジュールの名前を、リストからクリックします。 手作業で編集したコードを生成コードにマージしたくないときは、[マージ禁止]をクリック します。 ユーザ・コードを破棄したくない場合は、[マージ禁止]をクリックしてはいけません。 必要であれば、メッセージを通知するオプションを選択します。 選択肢は、[正常メッセージの通知]、[サイレントで]、[冗長で]です。 必要であれば、[Make 引き数]を入力します。 [Make]または[Make&実行]をクリックしたときに、これらの変数は取り込まれます。 必要であれば、[実行時引き数]を入力します。 [実行]または[Make&実行]をクリックしたときに、これらの変数は取り込まれます。 [デフォルト設定にリセット]をクリックすると、すべてのフィールドにデフォルト値を設定ます。 [了解]または[適用]をクリックして変更を行います。 [了解]をクリックすると、オプション・ダイアログ・ボックスが終了します。 環境オプションを設定するには<indexterm><primary>コード・ジェネレータの環境オプション</primary></indexterm><indexterm><primary>設定</primary><secondary>環境オプション</secondary></indexterm> アプリケーション・ビルダの主ウィンドウの[ファイル]メニューから[コード・ジェネレータ] を選択し、コード・ジェネレータ・ウィンドウを表示します。 [オプション]メニューから[環境]を選択して、環境オプション・ダイアログ・ボックスを表示します。 [変数名]テキスト・フィールドに変数を入力します。 たとえば、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ファイルは、生成された接続の効果を修正するユーザ・セグメントを 含んでいます。ユーザ・コードは、自動生成されたコードの実行前と後に追加されます。 さらに、各ファイルの始まりには、カスタム・ヘッダまたは著作権表示を追加するのに 使用できるユーザ・セグメントがあります。