ch09.sgm 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248
  1. <!-- $XConsortium: ch09.sgm /main/7 1996/09/08 19:49:04 rws $ -->
  2. <!-- (c) Copyright 1995 Digital Equipment Corporation. -->
  3. <!-- (c) Copyright 1995 Hewlett-Packard Company. -->
  4. <!-- (c) Copyright 1995 International Business Machines Corp. -->
  5. <!-- (c) Copyright 1995 Sun Microsystems, Inc. -->
  6. <!-- (c) Copyright 1995 Novell, Inc. -->
  7. <!-- (c) Copyright 1995 FUJITSU LIMITED. -->
  8. <!-- (c) Copyright 1995 Hitachi. -->
  9. <chapter id="ABUG.codeg.div.1">
  10. <title id="ABUG.codeg.mkr.1">コードの生成とアプリケーションの構築</title>
  11. <para>この章では、コード・ジェネレータと、コード・ジェネレータの使用したコードの生成、
  12. 生成コードへのユーザコードの追加、アプリケーションのMake、コンパイルしたアプリケ
  13. ーションの実行について説明します。コード・ジェネレータ・ウィンドウとその要素の説明は、
  14. <!--Original XRef content: '&xd2;Code Generator Window&xd3;on page&numsp;130'--><xref role="SecTitleAndPageNum" linkend="ABUG.apWDB.mkr.9">を参照してください。</para>
  15. <informaltable id="ABUG.codeg.itbl.1" frame="All">
  16. <tgroup cols="1">
  17. <colspec colname="1" colwidth="4.0 in">
  18. <tbody>
  19. <row rowsep="1">
  20. <entry><para><!--Original XRef content: 'Making and Running an Application107'--><xref role="JumpText" linkend="ABUG.codeg.mkr.2"></para></entry></row>
  21. <row rowsep="1">
  22. <entry><para><!--Original XRef content: 'To Set Code Generator Options109'--><xref role="JumpText" linkend="ABUG.codeg.mkr.2"></para></entry></row>
  23. <row rowsep="1">
  24. <entry><para><!--Original XRef content: 'To Set Environment Options110'--><xref
  25. role="JumpText" linkend="ABUG.codeg.mkr.4"></para></entry></row>
  26. <row rowsep="1">
  27. <entry><para><!--Original XRef content: 'Adding User Code to Generated Code112'--><xref role="JumpText" linkend="ABUG.codeg.mkr.6"></para></entry></row>
  28. <row rowsep="1">
  29. <entry><para><!--Original XRef content: 'To Generate Code from the Command
  30. Line111'--><xref role="JumpText" linkend="ABUG.codeg.mkr.5"></para></entry>
  31. </row></tbody></tgroup></informaltable>
  32. <sect1 id="ABUG.codeg.div.2">
  33. <title id="ABUG.codeg.mkr.2">アプリケーションのMakeと実行</title>
  34. <para>2つのシナリオを以下で説明します。1つめのシナリオは、1ステップで、アプリケーション
  35. の構築と実行を行います。2つめのシナリオは、別々のステップで、コードの生成、コード
  36. のコンパイル、およびアプリケーションの実行を行います。</para>
  37. <para>どちらの場合も、保存していないプロジェクトを変更すると、ダイアログ・ボックスが
  38. 表示され、コード生成の処理を取消すか、またはプロジェクトの保存するの選択を、ユーザに
  39. 要求します。プロジェクトに保存する選択を行ったとき、以前に保存をしたことがない
  40. 場合は、プロジェクトを保存する場所を指定する必要があります。</para>
  41. <sect2 id="ABUG.codeg.div.3" role="Procedure">
  42. <title>1ステップでMakeおよび実行をするには
  43. </title>
  44. <orderedlist><listitem><para><indexterm><primary>アプリケーション</primary><secondary>1ステップで構築および実行</secondary></indexterm><indexterm><primary>アプリケーションの実行</primary><secondary>1ステップで</secondary></indexterm>アプリケーション・ビルダの主ウィンドウの[ファイル]メニューから[コード・ジェネレータ]
  45. を選択します。</para>
  46. <para>コード・ジェネレータが表示されます。<indexterm><primary>コード・ジェネレータ</primary></indexterm></para>
  47. </listitem>
  48. <listitem><para>[Make & 実行]をクリックし、コードの生成、アプリケーションの構築および実行を行います。</para>
  49. <para>プロジェクトを保存し、すべてが正常にいくと、コード・ジェネレータの一番上にある
  50. 出力区画に多くのメッセージが表示されます。最後のメッセージは、「Running: ./[<emphasis>projectname</emphasis>] (実行中: ./[<emphasis>プロジェクト名</emphasis>])」
  51. です。このメッセージが表示されるとアプリケーションが実行されます。</para>
  52. <para>少なくとも、アプリケーション・ビルダの主ウィンドウは表示されています。アプリケーション
  53. の起動時に表示しないように設定したウィンドウは、隠されます。ユーザが選んだ、
  54. ユーザ・コードを必要としない機能に基づいて、アプリケーションは、様々な処理
  55. (メニュー表示、接続のテスト、アイテム・ヘルプ表示など)を行います。</para>
  56. </listitem>
  57. </orderedlist>
  58. <note>
  59. <para>最終的には、アプリケーションを完成するには、コードを記述しなければなりません。
  60. たとえば、接続エディタで指定する[関数呼び出し]コールバックは、置き換えなくては
  61. なりません。詳細は、<!--Original XRef content: '&xd2;Adding User Code to Generated Code&xd3; on page&numsp;112'--><xref role="SecTitleAndPageNum" linkend="ABUG.codeg.mkr.6">を参照してください。</para>
  62. </note>
  63. </sect2>
  64. <sect2 id="ABUG.codeg.div.4" role="Procedure">
  65. <title>コード作成、Make、および実行を別々に行うには</title>
  66. <orderedlist><listitem><para>[コードの生成]をクリックして、現在のプロジェクトのコードを生成します。<indexterm><primary>アプリケーション</primary><secondary>コードの生成</secondary></indexterm><indexterm><primary>アプリケーションのコードの生成</primary></indexterm></para>
  67. <para>コード・ジェネレータが起動されると、コード・ジェネレータ・ウィンドウの一番上の
  68. 出力区画にメッセージが表示されます。最後に出力されるメッセージは、「Completed
  69. successfully.(正常に完了しました。)」です。
  70. Makefile、プロジェクト・ファイル、モジュール・ファイル、および2つの<filename>dtb_utils</filename>ファイル
  71. を含む多くのファイルが生成されます。コード・ジェネレータ・ウィンドウの一番下に
  72. ある端末区画で、生成されたファイルを見ることができます。</para>
  73. </listitem><listitem><para>[Make]をクリックして、アプリケーションを構築します。<indexterm><primary>アプリケーション</primary><secondary>構築</secondary></indexterm><indexterm><primary>アプリケーションの構築</primary></indexterm></para>
  74. <para>アプリケーションがコンパイルされたとき、多くのメッセージが、出力区画に表示され
  75. ます。最後に出力されるメッセージは、「Completed successfully.(正常に完了しました。)」です。
  76. オブジェクト・ファイル、実行形式のアプリケーション・ファイルを含む数個のファイル
  77. が生成され、これらのファイルには、ユーザがプロジェクトにつけた名前がついています。</para>
  78. </listitem><listitem><para>[実行]をクリックして、アプリケーションを実行します。 <indexterm><primary>アプリケーション</primary><secondary>実行</secondary></indexterm><indexterm><primary>アプリケーションの実行</primary></indexterm></para>
  79. <para>コマンド行で実行形式のファイルを入力したときのように、アプリケーションが起動します。</para>
  80. </listitem><listitem><para>[中止]をクリックすると、アプリケーションが終了します。 <indexterm><primary>アプリケーション</primary><secondary>終了</secondary></indexterm><indexterm><primary>終了</primary><secondary>アプリケーション</secondary></indexterm></para>
  81. <para>これでアプリケーションは終了し、ウィンドウが閉じます。また、[中止]をクリックして、
  82. コード・ジェネレータ、またはコード・ジェネレータ・ウィンドウで起動した <command>make</command>操作も
  83. 終了できます。 </para>
  84. </listitem>
  85. </orderedlist>
  86. </sect2>
  87. <sect2 id="ABUG.codeg.div.5" role="Procedure">
  88. <title id="ABUG.codeg.mkr.3">コード・ジェネレータのオプションを設定するには<indexterm><primary>コード・ジェネレータのオプション</primary></indexterm><indexterm><primary>コード・ジェネレータ</primary><secondary>オプション</secondary></indexterm><indexterm><primary>設定</primary><secondary>コード・ジェネレータのオプション</secondary></indexterm></title>
  89. <para>生成されるコード、またはその他のコード・ジェネレータ機能を決定するには、次のようにします。</para>
  90. <orderedlist><listitem><para>アプリケーション・ビルダの主ウィンドウの[ファイル]メニューから[コード・ジェネレータ]を
  91. 選択します。</para>
  92. </listitem><listitem><para>[オプション]メニューから[ジェネレータ]を選択すると、コード・ジェネレータ・オプション
  93. ・ダイアログ・ボックスが表示されます。</para>
  94. </listitem><listitem><para>[コードの生成対象]オプション([プロジェクト全体]、[メインのみ]、
  95. [特定のモジュールのみ]、[特定のモジュールとメイン])の1つを選択します。</para>
  96. <para>[特定のモジュールのみ]、または[特定のモジュールとメイン]を選択すると、モジュールが
  97. アクティブになります。コードを生成したいモジュールの名前を、リストからクリックします。</para>
  98. </listitem><listitem><para>手作業で編集したコードを生成コードにマージしたくないときは、[マージ禁止]をクリック
  99. します。</para>
  100. <note>
  101. <para>ユーザ・コードを破棄したくない場合は、[マージ禁止]をクリックしてはいけません。 </para>
  102. </note>
  103. </listitem>
  104. <listitem><para>必要であれば、メッセージを通知するオプションを選択します。</para>
  105. <para>選択肢は、[正常メッセージの通知]、[サイレントで]、[冗長で]です。</para>
  106. </listitem><listitem><para>必要であれば、[Make 引き数]を入力します。</para>
  107. <para>[Make]または[Make&実行]をクリックしたときに、これらの変数は取り込まれます。</para>
  108. </listitem><listitem><para>必要であれば、[実行時引き数]を入力します。</para>
  109. <para>[実行]または[Make&実行]をクリックしたときに、これらの変数は取り込まれます。</para>
  110. </listitem><listitem><para>[デフォルト設定にリセット]をクリックすると、すべてのフィールドにデフォルト値を設定ます。 </para>
  111. </listitem><listitem><para>[了解]または[適用]をクリックして変更を行います。</para>
  112. <para>[了解]をクリックすると、オプション・ダイアログ・ボックスが終了します。</para>
  113. </listitem></orderedlist>
  114. </sect2>
  115. <sect2 id="ABUG.codeg.div.6" role="Procedure">
  116. <title id="ABUG.codeg.mkr.4">環境オプションを設定するには<indexterm><primary>コード・ジェネレータの環境オプション</primary></indexterm><indexterm><primary>設定</primary><secondary>環境オプション</secondary></indexterm></title>
  117. <orderedlist><listitem><para>アプリケーション・ビルダの主ウィンドウの[ファイル]メニューから[コード・ジェネレータ]
  118. を選択し、コード・ジェネレータ・ウィンドウを表示します。</para>
  119. </listitem><listitem><para>[オプション]メニューから[環境]を選択して、環境オプション・ダイアログ・ボックスを表示します。</para>
  120. </listitem><listitem><para>[変数名]テキスト・フィールドに変数を入力します。</para>
  121. <para>たとえば、<command>PATH</command>環境変数を変更するとします。</para>
  122. </listitem><listitem><para>[取得]をクリックして、[変数名]に変数の現在の値を表示します。</para>
  123. <para>変数の値が、[値]区画に表示されます。</para>
  124. </listitem><listitem><para>[値]を変更して、[設定]をクリックし、変数の値を変更します。</para>
  125. <para>この変更は、アプリケーション・ビルダのセッションのみに適用されます。</para>
  126. </listitem><listitem><para>[リセット]をクリックすると、[値]がアプリケーション・ビルダのセッション外の値にリセット
  127. されます。</para>
  128. </listitem><listitem><para>[キャンセル]をクリックして、ダイアログ・ボックスを終了します。</para>
  129. </listitem></orderedlist>
  130. </sect2>
  131. <sect2 id="ABUG.codeg.div.7" role="Procedure">
  132. <title id="ABUG.codeg.mkr.5">コマンド行からコードを生成するには</title>
  133. <para>コマンド行からアプリケーション・ビルダのコードを生成するには、<command>dtcodegen</command>を実行します。使用方法は以下のとおりです。</para>
  134. <para>使用方法: <command>dtcodegen</command> [<symbol role="Variable">options
  135. </symbol>] [<symbol role="Variable">project-file</symbol>] [<symbol role="Variable">
  136. module-file</symbol> [<symbol role="Variable">module-file</symbol>] ...]</para>
  137. <para>コードは、コマンド行で指定した各モジュール、またはプロジェクト内のすべてのモジュール
  138. に対して生成されます。モジュールを指定しないと、プロジェクトのすべてのモジュールに対して
  139. 生成されます。プロジェクトファイルが指定されていないときは、指定したモジュールを
  140. 含むプロジェクトが、現在のディレクトリから検索されます。</para>
  141. <para>拡張子<filename>.bip</filename>を持つファイルはBILプロジェクト・ファイルとみなされ、
  142. 拡張子<filename>.bix</filename>をもつファイルはカプセル化されたBILファイルとしてみなされます。
  143. 拡張子<filename>.bil</filename>をもつファイルは、BILモジュール・ファイルとみなされます。</para>
  144. <informaltable>
  145. <tgroup cols="2" colsep="0" rowsep="0">
  146. <colspec align="left" colname="col1" colwidth="169*">
  147. <colspec align="left" colname="col2" colwidth="359*">
  148. <spanspec nameend="col2" namest="col1" spanname="1to2">
  149. <thead>
  150. <row><entry align="left" spanname="1to2" valign="bottom"><para>オプション(* はデフォルト、+ はプロジェクト・ファイルを持たないデフォルト)</para></entry>
  151. </row>
  152. </thead>
  153. <tbody>
  154. <row>
  155. <entry><para><command>-help (-h)</command></para></entry>
  156. <entry><para>ヘルプ・メッセージを表示します。</para></entry></row>
  157. <row>
  158. <entry><para><filename>-main</filename></para></entry>
  159. <entry><para>main()を含むファイルを記述します。</para></entry></row>
  160. <row>
  161. <entry><para><filename>-changed</filename></para></entry>
  162. <entry><para>変更されたファイルのみを生成します。</para></entry></row>
  163. <row>
  164. <entry><para><command>* -merge</command></para></entry>
  165. <entry><para>生成された_stubs.cファイルと以前のバージョンをマージします。</para></entry>
  166. </row>
  167. <row>
  168. <entry><para><filename>-nomerge</filename></para></entry>
  169. <entry><para>既存および新規stubsファイルをマージしません。</para></entry></row>
  170. <row>
  171. <entry><para><command>* -project (-p)</command></para></entry>
  172. <entry><para>コードの生成対象となるプロジェクトを指定します。</para></entry></row>
  173. <row>
  174. <entry><para><command>-noproject (-np)</command></para></entry>
  175. <entry><para>プロジェクトの設定にデフォルトを使用し、プロジェクト・ファイルを無視します。</para></entry>
  176. </row>
  177. <row>
  178. <entry><para><command>+ -showall</command></para></entry>
  179. <entry><para>アプリケーションが起動時にすべてのウィンドウを表示(マップ)します。</para></entry>
  180. </row>
  181. <row>
  182. <entry><para><command>* -noshowall</command></para></entry>
  183. <entry><para>アプリケーションが初期に表示するように指定したウィンドウを表示(マップ)します。</para></entry></row>
  184. <row>
  185. <entry><para><command>-silent (-s)</command></para></entry>
  186. <entry><para>サイレント・モードです。メッセージは記述されません。</para></entry></row>
  187. <row>
  188. <entry><para><command>-verbose (-v)</command></para></entry>
  189. <entry><para>冗長モードです。詳細な経過メッセージを出力します。</para></entry></row>
  190. </tbody></tgroup></informaltable>
  191. </sect2>
  192. </sect1>
  193. <sect1 id="ABUG.codeg.div.8">
  194. <title id="ABUG.codeg.mkr.6">生成コードへのユーザ・コードの追加</title>
  195. <para>コード・ジェネレータの[コードの生成]をクリックするか、またはコマンド行から
  196. <command>dtcodegen</command>を実行してインタフェースのコードを生成すると、プロジェクト・フォルダに
  197. 多数のプロジェクトが作成されます。たとえば、プロジェクトが 「test」という名で、
  198. 「mod1」という名の1つのモジュールを持っている場合は、以下のファイルが生成されます。</para>
  199. <itemizedlist remap="Bullet1"><listitem><para><command>Makefile</command>
  200. (他のプラットフォームのMakefilesを含めます)</para>
  201. </listitem><listitem><para><filename>dtb_utils.c</filename></para>
  202. </listitem><listitem><para><filename>dtb_utils.h</filename></para>
  203. </listitem><listitem><para><filename>mod1.bil</filename> (モジュール・ファイル)</para>
  204. </listitem><listitem><para><filename>mod1_stubs.c</filename></para>
  205. </listitem><listitem><para><filename>mod1_ui.c</filename></para>
  206. </listitem><listitem><para><filename>mod1_ui.h</filename></para>
  207. </listitem><listitem><para><filename>test.bip</filename> (プロジェクト・ファイル)</para>
  208. </listitem><listitem><para><filename>test.c</filename></para>
  209. </listitem><listitem><para><filename>test.h</filename></para>
  210. </listitem><listitem><para><command>Test</command> (リソース・ファイル)</para>
  211. </listitem></itemizedlist>
  212. <para>接続エディタで[関数呼び出し]または[実行コード]接続を行うと、これらの接続は、生成
  213. コードに反映されます。生成コード内で、ユーザによって修正可能なすべての領域には、
  214. 次のような形式のコメントがつきます。</para>
  215. <programlisting>/* DTB_USER_CODE START */
  216. /* DTB_USER_CODE_END */
  217. </programlisting>
  218. <para>STARTとENDコメントの間の領域は、「ユーザ・セグメント」とみなされます。
  219. 任意のテキスト(Cのコードではないものであっても)ユーザ・セグメント内に追加する
  220. ことができます。コード・ジェネレータは、このコードを、次期以降のすべてのバージョン
  221. で保持します。各ユーザ・セグメントは、そのセグメントに追加されるべきコード型、
  222. またはセグメントが実行されるときのアプリケーションの状態を促すコメントではじまり
  223. ます。これらの提示は、純粋な情報であって、無視されることがあります。</para>
  224. <para>アプリケーション・ビルダとコード・ジェネレータのどちらも、追加されたコードが正当な
  225. Cコードであることを確かめることはできません。検証することはできません。変更した
  226. ファイルが、ユーザのコンパイラで満足な処理がなされるかどうかは、ユーザの責任になります。</para>
  227. <para>手作業で編集したすべてのコードを破棄するには、コード・ジェネレータ・ウィンドウの
  228. オプション・ダイアログから[マージ禁止]を選択するか、または<command>dtcodegen</command>を<filename>-nomerge</filename>
  229. オプションをつけて実行します。これは、多くの作業が失われる可能性があるので、非常に
  230. 注意して行うべきです。</para>
  231. <para>どんな環境においても、生成されたコメントを修正すべきではありません。生成された
  232. コメントが修正されると、コード生成に失敗し、結果ファイルがコンパイルできない可能性
  233. があります。そのような誤りからの復旧を助けるために、<filename>.BAK</filename>拡張子を
  234. 持つバックアップ・ファイルが現在のディレクトリに保存されます。</para>
  235. <para>ユーザ・コード・セグメントはコード内の重要な箇所にあり、生成されたアプリケーション
  236. のカスタマイズを容易にします。<filename>main()</filename>に関連するすべてのコード
  237. とアプリケーション全体のデータ及び構造体は、&lt;<emphasis>projectname</emphasis>><filename>.h</filename>と&lt;<emphasis>projectname</emphasis>><filename>.c</filename>で
  238. 定義されています。これらのファイルでは、フィールドがアプリケーションのXtリソース
  239. ・データ構造体に追加され、開発者が定義した新しいデータ型と変数が追加されます。
  240. そしてアプリケーションの起動の手続きが修正されます。</para>
  241. <para>各&lt;<emphasis>modulename</emphasis>><filename>_stubs.c</filename>ファイルは、生成された接続の効果を修正するユーザ・セグメントを
  242. 含んでいます。ユーザ・コードは、自動生成されたコードの実行前と後に追加されます。</para>
  243. <para>さらに、各ファイルの始まりには、カスタム・ヘッダまたは著作権表示を追加するのに
  244. 使用できるユーザ・セグメントがあります。</para>
  245. </sect1>
  246. </chapter>
  247. <!--fickle 1.14 mif-to-docbook 1.7 01/02/96 10:11:44-->
  248. <?Pub *0000022158>