1Kuinコンパイラ
Kuinコンパイラには、エディタやデバッガとセットになっている「kuin.exe」と、コマンドライン上でコンパイルできる「kuincl.exe」が用意されています。
2kuincl.exeのコンパイルオプション
kuincl.exeのコンパイルオプションは表2-1の通りです。
コンパイルオプション | 説明 | 省略時の挙動 |
---|---|---|
-i ファイル | コンパイルする.knファイルを指定 | 使い方を示すヘルプを表示 |
-o ファイル | 出力する.exeファイルを指定 | -iで指定した.knファイルと同じディレクトリにout.exeを生成 |
-s ディレクトリ | システムディレクトリを指定 | コンパイラが存在するディレクトリ/sys/ |
-c ファイル | アイコンに設定する.icoファイルを指定 | デフォルトアイコン |
-p ディレクトリ | リソースディレクトリ(/res/)の位置を指定 | -iで指定した.knファイルと同じディレクトリ |
-f ディレクトリ | 関連ファイルが書かれたテキストファイルを指定 | 特になし |
-e 実行環境 | 実行環境を指定 | exe(Windows用実行ファイル) |
-x 追加オプション | 実行環境ごとに定められた追加オプション | 特になし |
-r | リリースビルドを行う | デバッグビルド |
-h | 使い方を示すヘルプを表示 | 特になし |
-v | コンパイラのバージョンを表示 | 特になし |
-q | エラーと警告以外の出力を抑制する | 特になし |
いずれのオプションも省略可能です。 それぞれコンパイルオプションについて、以下で詳しく説明します。
2.1-i
「input」の頭文字です。 main関数が存在する.knファイルを指定します。
2.2-o
「output」の頭文字です。 出力する実行ファイルを指定します。 省略すると、-iで指定した.knファイルと同じディレクトリに、「out.exe」という名前で生成されます。
2.3-s
「system」の頭文字です。 システムディレクトリを指定します。 通常は省略して問題ありません。
2.4-c
「icon」の2文字目です。 .icoファイルを指定すると、実行ファイルやウインドウアイコンなどにそのアイコンが使われるようになります。 省略するとKuinが用意するデフォルトアイコンが設定されます。
2.5-p
「pack」の頭文字です。 リソースディレクトリ(/res/)の位置を指定します。 省略すると、-iで指定した.knファイルと同じディレクトリに「/res/」が存在するものとみなされます。
2.6-f
「files」の頭文字です。 出力先ディレクトリ内にコピーする関連ファイルが書かれたテキストファイルを指定します。
テキストファイルの中身は、1行ずつ「コピー元ファイルのフルパス」「コピー先ファイルの出力先ディレクトリからの相対パス」を繰り返して書きます。
2.7-e
「environment」の頭文字です。 表2-2で示す実行環境を指定します。 省略すると「-e exe」とみなされます。
コンパイルオプション | 実行環境 |
---|---|
-e exe | Windows用の実行ファイルを生成する |
-e cpp | C++用のソースコードを生成する |
-e web | Webブラウザで実行できるHTMLとJavaScriptを生成する |
指定した値は、プログラム中で「env("e")」を使って[]char型で参照できます。 例えば「-e exe」と指定した場合、プログラム中に「env("e")」と書くと「"exe"」の値が定数として取得できます。
2.8-x
「extra」の頭文字です。 -eで指定される実行環境ごとに定められた追加オプションを指定します。 複数指定できます(表2-3)。
-eの指定 | コンパイルオプション | 説明 |
---|---|---|
任意 | -x binary | (実装中の機能につき使用禁止) |
任意 | -x hint | Kuin Editor用にヒント情報を生成する(上級者向け機能) |
exe | -x dbgbreak | デバッガがアタッチしやすいように、プログラム起動直後にメッセージボックスを出したのちブレークポイント例外(INT3)を発生させる |
exe | -x pause | 「-x wnd」を指定しないときのみ有効。 プログラム終了時に「pause」コマンドを実行する(上級者向け機能) |
exe | -x wnd | ウインドウアプリにする。 省略するとコンソールアプリになる |
cpp | -x lib | エントリーポイントをライブラリ用として生成する |
cpp | -x nogc | ガーベージコレクション(GC)を無効化し、確保したヒープはプログラム終了時に一括解放する |
cpp | -x nogcdb | 「-x nogc」を指定したときのみ有効。 ヒープをダブルバッファリングする(上級者向け機能) |
web | -x merge | 生成するHTMLとJavaScriptを、1つのHTMLにマージして出力する |
web | -x static | JavaScriptを即時実行せず、外部からの呼び出しで実行できるようにする |
コンパイルオプションはユーザが自由に作成することができます。 指定した値は、プログラム中で「env()」を使って[]char型で参照できます。 例えば「-x option」と指定した場合、プログラム中に「env("option")」と書くと「"true"」の値が定数として取得できます。 このようにオプションが定義されていれば「"true"」が返り、定義されていなければ空文字列「""」が返ります。
「-x option=abc」のようにコンパイルオプションの値を指定することもできます。 この場合、プログラム中に「env("option")」と書くと「"abc"」の値が定数として取得できます。
2.9-r
「release」の頭文字です。 このオプションを指定するとリリースビルドされ、省略するとデバッグビルドされます。
指定した値は、プログラム中で「dbg」定数としてbool型で参照できます。 「-r」を指定した場合、プログラム中に「dbg」と書くと「false」の値が取得できます。 「-r」を指定しなかった場合、「dbg」は「true」になります。
2.10-h
「help」の頭文字です。 このオプションを指定するとkuincl.exeの使い方が表示されます。
2.11-v
「version」の頭文字です。 このオプションを指定するとコンパイラのバージョンが表示されます。
2.12-q
「quiet」の頭文字です。 このオプションを指定するとエラーと警告以外の出力を抑制します。 処理が成功したときにはログに何も出力したくない場合に指定します。
3コンパイル時の仕様
以下にKuinのコンパイル時の仕様をまとめます。
3.1入力ファイルの特殊な仕様
コンパイルするファイルの特殊な仕様は図3-1の通りです。
3.2デバッグビルドとリリースビルドの違い
デバッグビルドとリリースビルドの違いは表3-1の通りです。
項目 | デバッグビルド | リリースビルド |
---|---|---|
用途 | 開発時に日常的に使う | 完成時に1回だけ使う |
最適化 | 最適化せず、コンパイル速度を優先 | 最適化し、実行速度を優先 |
リソースデータの暗号パック化 | なし | 暗号パック化 |
dbg定数の値 | dbgは「true」となる | dbgは「false」となる |
assert | 実行時にアサーションチェックする | assert文を削除 |
配列の範囲外アクセスチェック | 範囲外アクセスで例外を発生させる | 範囲外アクセスをチェックしない |
その他、標準ライブラリや組み込み関数が生成する多くの例外は、リリースビルド時には生成されません。
一般に開発時はコンパイルが高速なデバッグビルドで入念に検証し、完成時にはリリースビルドで配布用のファイルを生成する流れで開発します。
3.3実行環境の詳細
コンパイラが生成した実行ファイルが動作する環境は表3-2の通りです。
実行環境 | 詳細 |
---|---|
-e exe -x wnd | Windows 7以降(Windows 10など)の64bit環境で動作する、グラフィックス機能等を活用したウインドウアプリ |
-e exe | Windows 7以降(Windows 10など)の64bit環境で動作する、コマンドプロンプト上で動作するコンソールアプリ |
-e cpp | Visual C++、g++、clang++などでビルド可能な、C++ソースコード |
-e web | Chrome、Firefox、Edge、Internet Explorer 11などのWebブラウザ上で動作する、HTMLとJavaScriptソースコード |