OSDN Git Service

タグを打ち忘れていたついでに、html版ドキュメントを追加しました。
[ring-lang-081/ring.git] / docs / ja-jp / build / html / distribute_ring2exe.html
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
4
5 <html xmlns="http://www.w3.org/1999/xhtml">
6   <head>
7     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
8     
9     <title>Ring2EXE による Ring アプリケーションの配布方法 &mdash; プログラミング言語 Ring 1.12 取扱説明書</title>
10     
11     <link rel="stylesheet" href="_static/bootstrap-astropy.css" type="text/css" />
12     <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
13     
14     <script type="text/javascript">
15       var DOCUMENTATION_OPTIONS = {
16         URL_ROOT:    './',
17         VERSION:     '1.12',
18         COLLAPSE_INDEX: false,
19         FILE_SUFFIX: '.html',
20         HAS_SOURCE:  true
21       };
22     </script>
23     <script type="text/javascript" src="_static/jquery.js"></script>
24     <script type="text/javascript" src="_static/underscore.js"></script>
25     <script type="text/javascript" src="_static/doctools.js"></script>
26     <script type="text/javascript" src="_static/translations.js"></script>
27     <link rel="top" title="プログラミング言語 Ring 1.12 取扱説明書" href="index.html" />
28     <link rel="next" title="Ring パッケージ管理プログラム (RingPM)" href="ringpm.html" />
29     <link rel="prev" title="Ring アプリケーションの配布方法" href="distribute.html" />
30     <link href='https://fonts.googleapis.com/css?family=Source+Sans+Pro:200,600' rel='stylesheet' type='text/css'/>
31
32   </head>
33   <body role="document">
34 <div class="topbar">
35   <a class="brand" title="Documentation Home" href="index.html"><span id="logotext1">&#x1f369;Ring</span><span id="logotext2"> 1.12</span><span id="logotext3">:docs</span></a>
36   <ul>
37     
38     <li><a href="http://ring-lang.sourceforge.net/news.html">News</a></li>
39     <li><a href="http://ring-lang.sourceforge.net/download.html">Download</a></li>
40     <li><a href="https://groups.google.com/forum/#!forum/ring-lang">Get Help</a></li>
41     <li><a href="https://github.com/ring-lang/ring">Contribute</a></li>
42     <li><a href="http://ring-lang.sourceforge.net/resources.html">Resources</a></li>
43     <li><a href="http://ring-lang.sourceforge.net/team.html">Team</a></li>
44     
45     <li><a title="Ring Homepage" href="http://ring-lang.net/">Website</a></li>
46     <li><a title="総合索引" href="genindex.html">Index</a></li>
47     <li>
48       
49       
50 <form action="search.html" method="get">
51   <input type="text" name="q" placeholder="Search" />
52   <input type="hidden" name="check_keywords" value="yes" />
53   <input type="hidden" name="area" value="default" />
54 </form>
55       
56     </li>
57   </ul>
58 </div>
59
60 <div class="related">
61     <h3>ナビゲーション</h3>
62     <ul>
63       <li class="right">
64         <a href="ringpm.html" title="Ring パッケージ管理プログラム (RingPM)">
65           次へ &raquo;
66         </a>
67       </li>
68       <li class="right">
69         <a href="distribute.html" title="Ring アプリケーションの配布方法">
70           &raquo; 前へ
71         </a>
72          |
73       </li>
74       <li>
75         <a href="index.html">プログラミング言語 Ring 1.12 取扱説明書</a>
76          &raquo;
77       </li>
78       
79       <li>Ring2EXE による Ring アプリケーションの配布方法</li> 
80     </ul>
81 </div>
82   
83
84     <div class="document">
85       <div class="documentwrapper">
86         <div class="bodywrapper">
87           <div class="body" role="main">
88             
89   <div class="section" id="ring2exe-ring">
90 <span id="index-0"></span><h1>Ring2EXE による Ring アプリケーションの配布方法<a class="headerlink" href="#ring2exe-ring" title="このヘッドラインへのパーマリンク">¶</a></h1>
91 <p>Ring アプリケーションの配布方法を学びます。</p>
92 <p>現在は、スグレモノである RingEXE (Ring 1.6 以降) があります。</p>
93 <p>Ring2EXE で Windows, Linux, macOS およびモバイル・アプリケーションを手軽に配布できます。</p>
94 <div class="admonition note">
95 <p class="first admonition-title">注釈</p>
96 <p class="last">Ring ノートパッドの配布メニューも使えます (最も簡単な方法)。</p>
97 </div>
98 <div class="section" id="ring2exe">
99 <span id="index-1"></span><h2>Ring2EXE の用法<a class="headerlink" href="#ring2exe" title="このヘッドラインへのパーマリンク">¶</a></h2>
100 <div class="highlight-none"><div class="highlight"><pre>ring2exe ファイル名.ring [オプション]
101 </pre></div>
102 </div>
103 <p>プログラムの入力として ファイル名.ring を指定します</p>
104 <p>このファイルが生成されます。</p>
105 <div class="highlight-none"><div class="highlight"><pre>ファイル名.ringo          (Ring オブジェクトファイル - コンパイラにより生成)
106 ファイル名.c              (このプログラムにより生成された
107                                ringo ファイルの内容を有する
108                                C ソースコードファイルです)
109 ファイル名_buildvc.bat    (Visual C/C++ で filename.c をビルドするために実行します)
110 ファイル名_buildgcc.bat   (GNU C/C++ で filename.c をビルドするために実行します)
111 ファイル名_buildclang.bat (CLang C/C++ で filename.c をビルドするために実行します)
112 ファイル名.obj            (Visual C/C++ コンパイラにより生成されます)
113 ファイル名.exe            (Visual C/C++ リンカにより生成されます)
114 ファイル名                (実行ファイル - Linux および macOS プラットフォームにおいて)
115 </pre></div>
116 </div>
117 </div>
118 <div class="section" id="index-2">
119 <span id="id1"></span><h2>Ring2EXE の動作方法<a class="headerlink" href="#index-2" title="このヘッドラインへのパーマリンク">¶</a></h2>
120 <p>最初に Ring コンパイラで Ring オブジェクトファイル (*.ringo) を生成します。</p>
121 <p>C コンパイラ (オプション扱い) が存在する場合、このオブジェクトファイルは C ソースコードファイル内部へ埋め込まれます。</p>
122 <p>その後に、コンパイラと Ring ライブラリ (Ring 仮想計算機も組み込まれます) で実行ファイルを生成します!</p>
123 <p>C コンパイラが存在しない場合は Ring 実行ファイルのコピーを行い、アプリケーション名へ名称変更されます。</p>
124 <p>そして Ring オブジェクトファイルは (*.ringo) 起動時に実行される ring.ringo が実行ファイルとなります。</p>
125 <p>よって Ring2EXE を使用する電子計算機へ C コンパイラを導入したほうが簡単で良いです。</p>
126 </div>
127 <div class="section" id="index-3">
128 <span id="id2"></span><h2>用例<a class="headerlink" href="#index-3" title="このヘッドラインへのパーマリンク">¶</a></h2>
129 <p>test.ring の内容は、</p>
130 <div class="highlight-ring"><div class="highlight"><pre><span class="k">see</span> <span class="s">&quot;Hello, World!&quot;</span> <span class="o">+</span> <span class="n">nl</span>
131 </pre></div>
132 </div>
133 <p>Windows, Linux または macOS 用の実行可能ファイルをビルドするには</p>
134 <div class="highlight-none"><div class="highlight"><pre>ring2exe test.ring
135 </pre></div>
136 </div>
137 <p>プログラムを実行するには (Windows)</p>
138 <div class="highlight-none"><div class="highlight"><pre>test
139 </pre></div>
140 </div>
141 <p>プログラムを実行するには (Linux と macOS)</p>
142 <div class="highlight-none"><div class="highlight"><pre>./test
143 </pre></div>
144 </div>
145 </div>
146 <div class="section" id="index-4">
147 <span id="id3"></span><h2>オプション<a class="headerlink" href="#index-4" title="このヘッドラインへのパーマリンク">¶</a></h2>
148 <div class="highlight-none"><div class="highlight"><pre>-keep            : 一時作業用ファイルを削除しない
149 -static          : スタンドアロン形式による実行ファイルのビルド
150                    (ring.dll/ring.so/ring.dylib を使用しない)
151 -gui             : GUI アプリケーションのビルド (コンソールウィンドウの非表示)
152 -dist            : 配布対象のアプリケーションを準備
153 -allruntime      : 配布物へ全てのライブラリを同梱
154 -mobileqt        : モバイル版 Ring アプリケーションの配布準備で用いる Qt プロジェクトを準備
155 -noqt            : 配布物から RingQt を削除
156 -noallegro       : 配布物から RingAllegro を削除
157 -noopenssl       : 配布物から RingOpenSSL を削除
158 -nolibcurl       : 配布物から RingLibCurl を削除
159 -nomysql         : 配布物から RingMySQL を削除
160 -noodbc          : 配布物から RingODBC を削除
161 -nosqlite        : 配布物から RingSQLite を削除
162 -noopengl        : 配布物から RingOpenGL を削除
163 -nofreeglut      : 配布物から RingFreeGLUT を削除
164 -nolibzip        : 配布物から RingLibZip を削除
165 -noconsolecolors : 配布物から RingConsoleColors を削除
166 -nomurmuhash     : 配布物から RingMurmurHash を削除
167 -nocruntime      : 配布物から C ランタイムを削除
168 -qt              : 配布物へ RingQt を追加
169 -allegro         : 配布物へ RingAllegro を追加
170 -openssl         : 配布物へ RingOpenSSL を追加
171 -libcurl         : 配布物へ RingLibCurl を追加
172 -mysql           : 配布物へ RingMySQL を追加
173 -odbc            : 配布物へ RingODBC を追加
174 -sqlite          : 配布物へ RingSQLite を追加
175 -postgresql      : 配布物へ RingPostgreSQL を追加
176 -opengl          : 配布物へ RingOpenGL を追加
177 -freeglut        : 配布物へ RingFreeGLUT を追加
178 -libzip          : 配布物へ RingLibZip を追加
179 -libuv           : 配布物へ RingLibuv  を追加
180 -consolecolors   : 配布物へ RingConsoleColors を追加
181 -murmurhash      : 配布物へ RingMurmurHash を追加
182 -cruntime        : 配布物へ C ランタイムを追加
183 </pre></div>
184 </div>
185 </div>
186 <div class="section" id="index-5">
187 <span id="id4"></span><h2>スタンドアロン形式によるコンソールアプリケーションのビルド方法<a class="headerlink" href="#index-5" title="このヘッドラインへのパーマリンク">¶</a></h2>
188 <p>“-static” オプションはコンソールアプリケーションの実行ファイルをビルドします (静的リンク)。</p>
189 <p>こうすると Ring 動的リンクライブラリ (ring.dll, ring.so または ring.dylib) を使用しません (不要になります)。</p>
190 <p>ほかのライブラリを使うには、アプリケーションでライブラリをインクルードしてください。</p>
191 <div class="highlight-none"><div class="highlight"><pre>ring2exe test.ring -static
192 </pre></div>
193 </div>
194 </div>
195 <div class="section" id="ringallegro">
196 <span id="index-6"></span><h2>RingAllegro アプリケーションの配布方法<a class="headerlink" href="#ringallegro" title="このヘッドラインへのパーマリンク">¶</a></h2>
197 <p>この内容のコードが test2.ring にあります。</p>
198 <div class="highlight-ring"><div class="highlight"><pre><span class="c"># Ring2EXE ツールのテスト用プログラムです!</span>
199 <span class="c"># RingAllegro の用法</span>
200
201 <span class="k">load</span> <span class="s">&quot;gameengine.ring&quot;</span>   <span class="c"># ゲームエンジンへ制御権を渡します。</span>
202
203 <span class="k">func</span> <span class="n">main</span>                <span class="c"># ゲームエンジンから呼び出されます。</span>
204
205         <span class="n">oGame</span> <span class="o">=</span> <span class="k">New</span> <span class="n">Game</span> <span class="c"># ゲームオブジェクトの作成</span>
206         <span class="p">{</span>
207                 <span class="n">title</span> <span class="o">=</span> <span class="s">&quot;My First Game&quot;</span>
208         <span class="p">}</span>
209 </pre></div>
210 </div>
211 <p>ゲームの配布用に実行可能ファイルのビルドと準備をするには</p>
212 <p>“-dist” および “-allruntime” オプションで全てのライブラリをインクルードします。</p>
213 <div class="highlight-none"><div class="highlight"><pre>ring2exe test2.ring -dist -allruntime
214 </pre></div>
215 </div>
216 <p>前述のコマンドを実行後、出力先は:</p>
217 <ul class="simple">
218 <li>Windows : target/windows フォルダ</li>
219 <li>Linux   : target/linux フォルダ</li>
220 <li>macOS   : target/macos フォルダ</li>
221 </ul>
222 <p>前述のコマンドは、全ての Ring ランタイムライブラリを配布物へ追加します。</p>
223 <p>しかし RingAllegro のみ必要な場合は、このコマンドのほうが良いです。</p>
224 <div class="highlight-none"><div class="highlight"><pre>ring2exe test2.ring -dist -allegro -cruntime
225 </pre></div>
226 </div>
227 <p>これは、不要なランタイムファイルを除外することで配布物の容量を削減します!</p>
228 <p>また “-gui” オプションでコンソールウィンドウを非表示にできます。</p>
229 <p>よって、このコマンドのほうが良いです。</p>
230 <div class="highlight-none"><div class="highlight"><pre>ring2exe test2.ring -dist -gui -allegro -cruntime
231 </pre></div>
232 </div>
233 </div>
234 <div class="section" id="ringqt">
235 <span id="index-7"></span><h2>RingQt アプリケーションの配布方法<a class="headerlink" href="#ringqt" title="このヘッドラインへのパーマリンク">¶</a></h2>
236 <p>この内容のコードが test3.ring にあります。</p>
237 <div class="highlight-ring"><div class="highlight"><pre><span class="c"># Ring2EXE ツールのテスト用プログラムです!</span>
238 <span class="c"># RingQt の用法</span>
239
240 <span class="k">load</span> <span class="s">&quot;guilib.ring&quot;</span>
241
242 <span class="k">new</span> <span class="n">qApp</span> <span class="p">{</span>
243         <span class="k">new</span> <span class="n">qWidget</span><span class="p">()</span> <span class="p">{</span>
244                 <span class="n">setwindowtitle</span><span class="p">(</span><span class="s">&quot;Hello, World!&quot;</span><span class="p">)</span>
245                 <span class="n">resize</span><span class="p">(</span><span class="mi">400</span><span class="p">,</span><span class="mi">400</span><span class="p">)</span>
246                 <span class="n">show</span><span class="p">()</span>
247         <span class="p">}</span>
248         <span class="n">exec</span><span class="p">()</span>
249 <span class="p">}</span>
250 </pre></div>
251 </div>
252 <p>GUI アプリケーションの配布用に、実行可能ファイルのビルドと準備をするには</p>
253 <p>“-dist” および “-allruntime” オプションで全てのライブラリをインクルードします。</p>
254 <div class="highlight-none"><div class="highlight"><pre>ring2exe test3.ring -dist -allruntime
255 </pre></div>
256 </div>
257 <p>前述のコマンドを実行後、出力先は:</p>
258 <ul class="simple">
259 <li>Windows : target/windows フォルダ</li>
260 <li>Linux   : target/linux フォルダ</li>
261 <li>macOS   : target/macos フォルダ</li>
262 </ul>
263 <p>前述のコマンドは全ての Ring ランタイムライブラリを配布物へ追加します。</p>
264 <p>RingQt のみ必要ならば、このコマンドのほうが良いです。</p>
265 <div class="highlight-none"><div class="highlight"><pre>ring2exe test3.ring -dist -qt -cruntime
266 </pre></div>
267 </div>
268 <p>これは、不要なランタイムファイルを除外することで配布物の容量を削減します!</p>
269 <p>また “-gui” オプションによりコンソールウィンドウを非表示にできます。</p>
270 <p>よって、このコマンドのほうが良いです。</p>
271 <div class="highlight-none"><div class="highlight"><pre>ring2exe test3.ring -dist -gui -qt -cruntime
272 </pre></div>
273 </div>
274 </div>
275 <div class="section" id="index-8">
276 <span id="id5"></span><h2>モバイル用アプリケーションの配布方法 (RingQt)<a class="headerlink" href="#index-8" title="このヘッドラインへのパーマリンク">¶</a></h2>
277 <p>“-mobileqt” オプションで RingQt アプリケーション (test3.ring) 用の Qt プロジェクトを準備します。</p>
278 <p>用例 :</p>
279 <div class="highlight-none"><div class="highlight"><pre>ring2exe test3.ring -dist -mobileqt
280 </pre></div>
281 </div>
282 <p>前述のコマンドを実行後、 target/mobile/qtproject フォルダに Qt プロジェクトがあります。</p>
283 <p>メインのプロジェクトファイルは project.pro です。 Qt Creator IDE で開くことができます。</p>
284 <p>またリソースファイルもあります : project.qrc</p>
285 <p>別の重要なファイルは C++ メインファイルです : main.cpp</p>
286 </div>
287 <div class="section" id="cards-ringqt">
288 <span id="index-9"></span><h2>モバイル版 Cards ゲームのビルド方法 (RingQt)<a class="headerlink" href="#cards-ringqt" title="このヘッドラインへのパーマリンク">¶</a></h2>
289 <dl class="docutils">
290 <dt>このフォルダにある Cards ゲームは Ring を使用した Android パッケージのビルド方法の良例であると考えられます:</dt>
291 <dd>ring/application/cards</dd>
292 </dl>
293 <p>Cards ゲームのフォルダには三本のファイルがあります</p>
294 <ul class="simple">
295 <li>cards.ring  : ゲームのソースコード</li>
296 <li>cards.jpg   : ゲームで使用される画像ファイル</li>
297 <li>project.qrc : Qt プロジェクトで使用されるリソースファイル</li>
298 </ul>
299 <p>リソースファイルの内容:</p>
300 <div class="highlight-none"><div class="highlight"><pre>&lt;RCC&gt;
301         &lt;qresource&gt;
302                 &lt;file&gt;cards.ringo&lt;/file&gt;
303                 &lt;file&gt;cards.jpg&lt;/file&gt;
304         &lt;/qresource&gt;
305 &lt;/RCC&gt;
306 </pre></div>
307 </div>
308 <p>二本のリソースファイルがあります。</p>
309 <p>一本目のファイルは cards.ringo (Ring オブジェクトファイル) であり、二本目のファイルは cards.jpg (画像ファイル) です。</p>
310 <p>まず、 Ring2EXE でリソースファイル (target/mobile/qtproject/project.qrc) を生成します。</p>
311 <p>しかし、このファイルの内容は cards.ringo のみです (Ring2EXE は Ring コンパイラを呼び出すことにより生成します)。</p>
312 <p>このリソースファイルへ画像を追加してから必ず更新してください : cards.jpg</p>
313 <p>更新後にメインのアプリケーションファイルへリソースファイルをコピーします。</p>
314 <p>Ring2EXE の再実行時に更新済みリソースファイルを使用します!</p>
315 <p>これでモバイル用の Card ゲームのビルドが行えます。</p>
316 <ol class="arabic simple">
317 <li>このコマンドを実行します</li>
318 </ol>
319 <div class="highlight-none"><div class="highlight"><pre>ring2exe cards.ring -dist -mobileqt
320 </pre></div>
321 </div>
322 <ol class="arabic simple" start="2">
323 <li>Qt Creator で target/mobile/qtproject/project.pro を開きます。</li>
324 <li>Qt Creator でビルドと実行を行います。</li>
325 </ol>
326 <p>Cards ゲームで画像ファイルを検出する方法は?</p>
327 <p>RingQt にはシンプルな関数があります: AppFile()</p>
328 <p>関数はデスクトップまたはモバイルプラットフォームでアクセスするファイルを決定するために使えます。</p>
329 <p>このコードは cards.ring からの引用です。</p>
330 <div class="highlight-ring"><div class="highlight"><pre><span class="n">mypic</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QPixmap</span><span class="p">(</span><span class="n">AppFile</span><span class="p">(</span><span class="s">&quot;cards.jpg&quot;</span><span class="p">))</span>
331 </pre></div>
332 </div>
333 <p>必要ならば AppFile() 関数を画像ファイルに使用します!</p>
334 </div>
335 <div class="section" id="weight-history-ringqt">
336 <span id="index-10"></span><h2>モバイル版 Weight History アプリケーションのビルド方法 (RingQt)<a class="headerlink" href="#weight-history-ringqt" title="このヘッドラインへのパーマリンク">¶</a></h2>
337 <p>このフォルダにある Weight History アプリケーションは Ring による Android パッケージのビルド方法であり
338 Ring2EXE と Qt を使用したモバイル・アプリケーションを配布するための別例であると考えられます:</p>
339 <blockquote>
340 <div>ring/application/weighthistory</div></blockquote>
341 <p>Weight History アプリケーションのフォルダには四本のファイルがあります</p>
342 <ul class="simple">
343 <li>weighthistory.ring : アプリケーションのソースコード</li>
344 <li>weighthistory.db : SQLite データベース</li>
345 <li>project.qrc : Qt プロジェクト用のリソースファイル</li>
346 <li>main.cpp : Qt プロジェクト用のメイン C++ ソースファイル</li>
347 </ul>
348 <p>モバイル用の Weight History アプリケーションをビルドするには</p>
349 <ol class="arabic simple">
350 <li>このコマンドを実行</li>
351 </ol>
352 <div class="highlight-none"><div class="highlight"><pre>ring2exe weighthistory.ring -dist -mobileqt
353 </pre></div>
354 </div>
355 <ol class="arabic simple" start="2">
356 <li>Qt Creator で target/mobile/qtproject/project.pro を開きます。</li>
357 <li>Qt Creator でビルドと実行を行います。</li>
358 </ol>
359 <p>リソースファイル (project.qrc) には二つのファイルがあります。</p>
360 <div class="highlight-none"><div class="highlight"><pre>&lt;RCC&gt;
361         &lt;qresource&gt;
362                 &lt;file&gt;weighthistory.ringo&lt;/file&gt;
363                 &lt;file&gt;weighthistory.db&lt;/file&gt;
364         &lt;/qresource&gt;
365 &lt;/RCC&gt;
366 </pre></div>
367 </div>
368 <p>一本目のファイルは weighthistory.ringo (Ring オブジェクトファイル - Ring2EXE が Ring コンパイラを呼び出すことで生成)</p>
369 <p>データベースファイル : weighthistory.db</p>
370 <p>main.cpp には次の小規模な更新があるため、モバイル機器の書き込み可能なリソースの場所へデータベースファイルをコピーしてください。</p>
371 <div class="highlight-none"><div class="highlight"><pre>QString path3 ;
372 path3 = path+&quot;/weighthistory.db&quot;;
373 QFile::copy(&quot;:/weighthistory.db&quot;,path3);
374 </pre></div>
375 </div>
376 <p>この作業はデータベースファイルのみ行う必要があります!</p>
377 <p>Ring2EXE 使用時、ツールは project.qrc および main.cpp の確認を行い、存在する場合は更新されたファイルとして</p>
378 <p>Ring2EXE により生成されたデフォルト版である target/mobile/qtproject を使用します。</p>
379 <p>よって Ring2EXE でファイルを更新した後に、更新する時にアプリケーションのフォルダへファイルをコピーするために使用してください。</p>
380 </div>
381 <div class="section" id="index-11">
382 <span id="id6"></span><h2>フォームデザイナーをモバイル機器用にビルドするには (RingQt)<a class="headerlink" href="#index-11" title="このヘッドラインへのパーマリンク">¶</a></h2>
383 <p>モバイル用のアプリケーションをフォームデザイナー・アプリケーション (ring/applications/formdesigner) でビルドをするには</p>
384 <ol class="arabic simple">
385 <li>このコマンドを実行</li>
386 </ol>
387 <div class="highlight-none"><div class="highlight"><pre>ring2exe formdesigner.ring -dist -mobileqt
388 </pre></div>
389 </div>
390 <ol class="arabic simple" start="2">
391 <li>Qt Creator で target/mobile/qtproject/project.pro を開きます。</li>
392 <li>Qt Creator でビルドと実行を行います。</li>
393 </ol>
394 <p>ring/application/formdesigner フォルダにはリソースファイルがあります : project.qrc</p>
395 <p>Ring2EXE により自動的に使用されます。</p>
396 <div class="highlight-none"><div class="highlight"><pre>&lt;RCC&gt;
397         &lt;qresource&gt;
398                 &lt;file&gt;formdesigner.ringo&lt;/file&gt;
399                 &lt;file&gt;image/allevents.png&lt;/file&gt;
400                 &lt;file&gt;image/checkbox.png&lt;/file&gt;
401                 &lt;file&gt;image/close.png&lt;/file&gt;
402                 &lt;file&gt;image/combobox.bmp&lt;/file&gt;
403                 &lt;file&gt;image/datepicker.bmp&lt;/file&gt;
404                 &lt;file&gt;image/dial.png&lt;/file&gt;
405                 &lt;file&gt;image/formdesigner.png&lt;/file&gt;
406                 &lt;file&gt;image/frame.png&lt;/file&gt;
407                 &lt;file&gt;image/grid.bmp&lt;/file&gt;
408                 &lt;file&gt;image/hyperlink.png&lt;/file&gt;
409                 &lt;file&gt;image/image.png&lt;/file&gt;
410                 &lt;file&gt;image/label.png&lt;/file&gt;
411                 &lt;file&gt;image/layout.png&lt;/file&gt;
412                 &lt;file&gt;image/lcdnumber.png&lt;/file&gt;
413                 &lt;file&gt;image/listview.png&lt;/file&gt;
414                 &lt;file&gt;image/lock.png&lt;/file&gt;
415                 &lt;file&gt;image/new.png&lt;/file&gt;
416                 &lt;file&gt;image/open.png&lt;/file&gt;
417                 &lt;file&gt;image/progressbar.png&lt;/file&gt;
418                 &lt;file&gt;image/project.png&lt;/file&gt;
419                 &lt;file&gt;image/pushbutton.png&lt;/file&gt;
420                 &lt;file&gt;image/radiobutton.png&lt;/file&gt;
421                 &lt;file&gt;image/save.png&lt;/file&gt;
422                 &lt;file&gt;image/saveas.png&lt;/file&gt;
423                 &lt;file&gt;image/select.png&lt;/file&gt;
424                 &lt;file&gt;image/slider.png&lt;/file&gt;
425                 &lt;file&gt;image/spinner.bmp&lt;/file&gt;
426                 &lt;file&gt;image/statusbar.png&lt;/file&gt;
427                 &lt;file&gt;image/tab.png&lt;/file&gt;
428                 &lt;file&gt;image/textarea.png&lt;/file&gt;
429                 &lt;file&gt;image/textfield.png&lt;/file&gt;
430                 &lt;file&gt;image/timer.png&lt;/file&gt;
431                 &lt;file&gt;image/toolbar.png&lt;/file&gt;
432                 &lt;file&gt;image/tree.bmp&lt;/file&gt;
433                 &lt;file&gt;image/videowidget.png&lt;/file&gt;
434                 &lt;file&gt;image/webview.png&lt;/file&gt;
435         &lt;/qresource&gt;
436 &lt;/RCC&gt;
437 </pre></div>
438 </div>
439 <p>Cards ゲームと同様、フォームデザイナーは AppFile() 関数を画像ファイル名を決定するために使用します。</p>
440 <p>このコードは ring/applications/formdesigner/mainwindow/formdesignerview.ring からの引用です。</p>
441 <div class="highlight-ring"><div class="highlight"><pre><span class="k">func</span> <span class="n">CreateToolBar</span>
442         <span class="n">aBtns</span> <span class="o">=</span> <span class="o">[</span>
443                         <span class="k">new</span> <span class="n">qtoolbutton</span><span class="p">(</span><span class="n">win</span><span class="p">)</span> <span class="p">{</span>
444                                 <span class="n">setbtnimage</span><span class="p">(</span><span class="n">self</span><span class="p">,</span><span class="n">AppFile</span><span class="p">(</span><span class="s">&quot;image/new.png&quot;</span><span class="p">))</span>
445                                 <span class="n">setclickevent</span><span class="p">(</span><span class="n">Method</span><span class="p">(:</span><span class="n">NewAction</span><span class="p">))</span>
446                                 <span class="n">settooltip</span><span class="p">(</span><span class="s">&quot;New File&quot;</span><span class="p">)</span>
447                         <span class="p">}</span> <span class="p">,</span>
448                         <span class="k">new</span> <span class="n">qtoolbutton</span><span class="p">(</span><span class="n">win</span><span class="p">)</span> <span class="p">{</span>
449                                 <span class="n">setbtnimage</span><span class="p">(</span><span class="n">self</span><span class="p">,</span><span class="n">AppFile</span><span class="p">(</span><span class="s">&quot;image/open.png&quot;</span><span class="p">))</span>
450                                 <span class="n">setclickevent</span><span class="p">(</span><span class="n">Method</span><span class="p">(:</span><span class="n">OpenAction</span><span class="p">))</span>
451                                 <span class="n">settooltip</span><span class="p">(</span><span class="s">&quot;Open File&quot;</span><span class="p">)</span>
452                         <span class="p">}</span> <span class="p">,</span>
453                         <span class="k">new</span> <span class="n">qtoolbutton</span><span class="p">(</span><span class="n">win</span><span class="p">)</span> <span class="p">{</span>
454                                 <span class="n">setbtnimage</span><span class="p">(</span><span class="n">self</span><span class="p">,</span><span class="n">AppFile</span><span class="p">(</span><span class="s">&quot;image/save.png&quot;</span><span class="p">))</span>
455                                 <span class="n">setclickevent</span><span class="p">(</span><span class="n">Method</span><span class="p">(:</span><span class="n">SaveAction</span><span class="p">))</span>
456                                 <span class="n">settooltip</span><span class="p">(</span><span class="s">&quot;Save&quot;</span><span class="p">)</span>
457                          <span class="p">}</span> <span class="p">,</span>
458                         <span class="k">new</span> <span class="n">qtoolbutton</span><span class="p">(</span><span class="n">win</span><span class="p">)</span> <span class="p">{</span>
459                                 <span class="n">setbtnimage</span><span class="p">(</span><span class="n">self</span><span class="p">,</span><span class="n">AppFile</span><span class="p">(</span><span class="s">&quot;image/saveas.png&quot;</span><span class="p">))</span>
460                                 <span class="n">setclickevent</span><span class="p">(</span><span class="n">Method</span><span class="p">(:</span><span class="n">SaveAsAction</span><span class="p">))</span>
461                                 <span class="n">settooltip</span><span class="p">(</span><span class="s">&quot;Save As&quot;</span><span class="p">)</span>
462                          <span class="p">}</span> <span class="p">,</span>
463                         <span class="k">new</span> <span class="n">qtoolbutton</span><span class="p">(</span><span class="n">win</span><span class="p">)</span> <span class="p">{</span>
464                                 <span class="n">setbtnimage</span><span class="p">(</span><span class="n">self</span><span class="p">,</span><span class="n">AppFile</span><span class="p">(</span><span class="s">&quot;image/close.png&quot;</span><span class="p">))</span>
465                                 <span class="n">setclickevent</span><span class="p">(</span><span class="n">Method</span><span class="p">(:</span><span class="n">ExitAction</span><span class="p">))</span>
466                                 <span class="n">settooltip</span><span class="p">(</span><span class="s">&quot;Exit&quot;</span><span class="p">)</span>
467                         <span class="p">}</span>
468                 <span class="o">]</span>
469
470         <span class="n">tool1</span> <span class="o">=</span> <span class="n">win</span><span class="p">.</span><span class="n">addtoolbar</span><span class="p">(</span><span class="s">&quot;files&quot;</span><span class="p">)</span>  <span class="p">{</span>
471                 <span class="k">for</span> <span class="n">x</span> <span class="k">in</span> <span class="n">aBtns</span> <span class="p">{</span> <span class="n">addwidget</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="n">addseparator</span><span class="p">()</span> <span class="p">}</span>
472         <span class="p">}</span>
473 </pre></div>
474 </div>
475 <p>この用例でサブフォルダでの画像の用法を理解できます。</p>
476 </div>
477 <div class="section" id="qt-folder2qrc">
478 <span id="index-12"></span><h2>Qt リソースファイルの作成方法 (Folder2qrc)<a class="headerlink" href="#qt-folder2qrc" title="このヘッドラインへのパーマリンク">¶</a></h2>
479 <p>大量の画像とファイルを有する大規模 RingQt プロジェクトがある場合、モバイル・アプリケーションの配布時にリソースファイル (*.qrc) へファイルを必ず追加してください。</p>
480 <p>Ring 1.6 以降では Folder2qrc ツールにより、一つずつファイルを追加する必要がなくなるので時間の節約になります。</p>
481 <p>用例:</p>
482 <div class="highlight-none"><div class="highlight"><pre>folder2qrc formdesigner.ring
483 </pre></div>
484 </div>
485 <p>アプリケーションフォルダに移動している間に、メインソースファイルの決定をするために
486 Folder2qrc は現在のフォルダとサブフォルダにある全てのファイルを確認します。
487 そして mainfile.ringo の後にリソースファイルを追加します (この用例ではformdesigner.ringo です)。</p>
488 <p>出力ファイル : project.qrc</p>
489 <p>ファイルを開く、または削除するためにリソースは不要です!</p>
490 </div>
491 <div class="section" id="index-13">
492 <span id="id7"></span><h2>Ring2EXE に関する重要情報<a class="headerlink" href="#index-13" title="このヘッドラインへのパーマリンク">¶</a></h2>
493 <ul class="simple">
494 <li>Ring2EXE で配布物を準備すると、古い配布物にあるファイルを全て削除します。</li>
495 </ul>
496 <p>例えば target/windows が使用される場合は</p>
497 <div class="highlight-none"><div class="highlight"><pre>ring2exe test3.ring -dist -allruntime
498 </pre></div>
499 </div>
500 <p>target/windows にあるファイルは再びファイルを追加する前に削除されます。</p>
501 <p>これは、モバイル機器用の配布物を準備するときに重要となります。</p>
502 <div class="highlight-none"><div class="highlight"><pre>ring2exe test3.ring -dist -mobileqt
503 </pre></div>
504 </div>
505 <p>リソースファイルを修正する場合は : project.qrc または、メインファイル main.cpp をアプリケーションフォルダへコピーすることを忘れないように注意してください!</p>
506 <p>前述のコマンドを再実行すると、 Ring2EXE で更新版を使えます!</p>
507 <ul>
508 <li><p class="first">Ring2EXE は Ring 記述しています。こちらからソースコードを読むことができます</p>
509 <blockquote>
510 <div><p><a class="reference external" href="https://github.com/ring-lang/ring/blob/master/ring2exe/ring2exe.ring">https://github.com/ring-lang/ring/blob/master/ring2exe/ring2exe.ring</a></p>
511 </div></blockquote>
512 </li>
513 <li><p class="first">ライブラリの情報は個々の独立したファイルに記録されています。よって将来、新しいライブラリへ対応する場合は、このファイルを自動的に更新できます。</p>
514 <blockquote>
515 <div><p><a class="reference external" href="https://github.com/ring-lang/ring/blob/master/ring2exe/libs">https://github.com/ring-lang/ring/blob/master/ring2exe/libs</a></p>
516 </div></blockquote>
517 </li>
518 </ul>
519 </div>
520 </div>
521
522
523           </div>
524         </div>
525       </div>
526       <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
527         <div class="sphinxsidebarwrapper"><h3>ページの内容</h3>
528 <ul>
529 <li><a class="reference internal" href="#">Ring2EXE による Ring アプリケーションの配布方法</a><ul>
530 <li><a class="reference internal" href="#ring2exe">Ring2EXE の用法</a></li>
531 <li><a class="reference internal" href="#index-2">Ring2EXE の動作方法</a></li>
532 <li><a class="reference internal" href="#index-3">用例</a></li>
533 <li><a class="reference internal" href="#index-4">オプション</a></li>
534 <li><a class="reference internal" href="#index-5">スタンドアロン形式によるコンソールアプリケーションのビルド方法</a></li>
535 <li><a class="reference internal" href="#ringallegro">RingAllegro アプリケーションの配布方法</a></li>
536 <li><a class="reference internal" href="#ringqt">RingQt アプリケーションの配布方法</a></li>
537 <li><a class="reference internal" href="#index-8">モバイル用アプリケーションの配布方法 (RingQt)</a></li>
538 <li><a class="reference internal" href="#cards-ringqt">モバイル版 Cards ゲームのビルド方法 (RingQt)</a></li>
539 <li><a class="reference internal" href="#weight-history-ringqt">モバイル版 Weight History アプリケーションのビルド方法 (RingQt)</a></li>
540 <li><a class="reference internal" href="#index-11">フォームデザイナーをモバイル機器用にビルドするには (RingQt)</a></li>
541 <li><a class="reference internal" href="#qt-folder2qrc">Qt リソースファイルの作成方法 (Folder2qrc)</a></li>
542 <li><a class="reference internal" href="#index-13">Ring2EXE に関する重要情報</a></li>
543 </ul>
544 </li>
545 </ul>
546
547
548   <h4>前のトピックへ</h4>
549   <p class="topless"><a href="distribute.html"
550                         title="前の章へ">Ring アプリケーションの配布方法</a></p>
551   <h4>次のトピックへ</h4>
552   <p class="topless"><a href="ringpm.html"
553                         title="次の章へ">Ring パッケージ管理プログラム (RingPM)</a></p>
554   <div role="note" aria-label="source link">
555     <h3>このページ</h3>
556     <ul class="this-page-menu">
557       <li><a href="_sources/distribute_ring2exe.txt"
558             rel="nofollow">ソースコードを表示</a></li>
559     </ul>
560    </div>
561       
562 <form action="search.html" method="get">
563   <input type="text" name="q" placeholder="Search" />
564   <input type="hidden" name="check_keywords" value="yes" />
565   <input type="hidden" name="area" value="default" />
566 </form>
567       
568         </div>
569       </div>
570       <div class="clearer"></div>
571     </div>
572 <footer class="footer">
573   <p class="pull-right">
574     <a href="_sources/distribute_ring2exe.txt"
575        rel="nofollow">ソースコードを表示</a> &nbsp;
576     <a href="#">冒頭へ戻る</a></p>
577   <p>
578     &copy; Copyright 2016-2020, Ring Team.<br/>
579     Created using <a href="http://www.sphinx-doc.org/en/stable/">Sphinx</a> 1.3.6 / astropy-sphinx-theme 1.1 (isVowel)
580   </p>
581 </footer>
582   </body>
583 </html>