HSPスクリプトをコンパイル・実行するためのツールです。 HSPの標準スクリプトエディタの他、コマンドラインにファイルパスを渡してツールを起動できるエディタなどで利用できます。
このツールは橋渡し的なもので、実際のコンパイル処理はHSPに付属しているhspcmp.dllが行います。
そのためHSPがインストールされている環境が必要です。
ツールの機能についてはオプションの項目を参照してください。
コンパイル済みパッケージは releases からダウンロードできます。
ウィンドウ・ダイアログを使用するcmptage.exeと、コンソール上で動作するcmptage_cl.exeがあります。
はじめに、HSPがインストールされているフォルダにcmptage.exeをコピー。
(copy.hspを HSPスクリプトエディタで開いてコンパイル+実行することでもコピーできます)
その後、使用するエディタの外部ツール設定でHSPフォルダのcmptage.exeを指定し下記のようにコマンドラインパラメータを設定します。
"対象ファイルのフルパス" オプション ...
- ファイルのフルパスは指定必須、パスに半角スペースが含まれる場合はパラメータの区切りと見なされるため引用符
"で囲む - オプションは任意・複数可、機能が重複できないものは後に指定したものが優先されるかエラーになる
- 各パラメーターは半角スペースで区切る
例えば TeraPad で利用する場合、
"%f" /d
と設定すると編集中のスクリプトをデバッグウィンドウ付きでコンパイル+実行します。
-
/d: 実行時にデバッグウィンドウを表示します。 -
/c: 実行前にコマンドライン入力ウィンドウを表示します。/c="文字列"と指定するとウィンドウを使わず文字列を送ります。コンソール版はこちらで指定してください。 この場合、文字に"を使うときは\を直前に置いてください。 また、%fはカレントディレクトリ文字列、%eはHSPディレクトリ文字列として展開されます。%%fとすると展開されずに %f という文字列になります。 -
/r: コンパイルの結果レポートを表示します。実行はされません。 -
/i: UTF-8で記述されたスクリプトをコンパイルします。/uオプションと併用できません。 -
/u: 文字列データをShift_JISからUTF-8に変換してコンパイルします。/iオプションと併用できません。 -
/me: 実行ファイル(exe)を作成します。 -
/ma: オブジェクトファイル(ax)を作成します。ファイルのサイズと既存ファイルとのサイズの差分も表示されます。
/ma="ファイル名"で作成されるaxファイル名を指定できます。パス指定可能です。 -
/mm: 文字列データファイル(strmap)を作成します。 -
/mc: cppファイルを作成します。/mc=sjisでShift_JISで作成、/mc=utf8でUTF-8で作成します。 省略すると作成時に選択します。コンソール版では省略時にShift_JISになります。 -
/e: 後述の拡張定義を利用します。 -
/t: 現在編集中の内容をhsptmpに保存してコンパイル+実行します。拡張定義のコンパイル対象変更と併用できません(エラーになります)。 このパラメーターは現在TeraPad専用です。
/t=%wと指定してください。 このパラメーター使用時はファイルの上書き保存は不要です。 -
/del: 中間ファイルobj,start.ax,packfile,hsptmpを削除します。
/eオプションを指定することで利用できる機能です。
スクリプトの行頭に特定の文字列を記述することで以下の処理をさせることができます。
;$s>対象ファイル: コンパイルするファイルを変更します。#include命令と併用すると便利です。絶対パス、相対パス共に有効です。
;$s>test.hsp
;$s>c:/hoge/test.hsp
;$s>../test.hsp
-
;$c>コマンドライン文字列: 実行時にコマンドライン文字列を渡します。/cオプションと同様に%f,%eの文字列が展開されます。 -
;$a>axファイル名: axファイル作成時のファイル名を変更します。 デフォルトのファイル名はstart.axです。 -
;$f>文字コードモード: スクリプトや文字列の文字コードモードを設定します。utf8inを指定すると/iオプションと同様にスクリプトをUTF-8としてコンパイルします。utf8cnvを指定すると/uオプションと同様に文字列をUTF-8に変換してコンパイルします。
それぞれの定義は>から行末までがパラメータとして認識されます。(>は含まれない)
複数のファイルに同じ定義が必要な場合は.cmpexdefファイルを利用すると便利です。
スクリプトと同じフォルダに拡張定義を記述した.cmpexdefファイルを置くと、
そのフォルダにあるスクリプトはその定義を用いるようになります。
拡張定義はデフォルトでは負荷低減のためファイル先頭から512バイトまでしか読まれないので初めの方に記述してください。
ただしオプションで /e=allと指定するとファイル全体が読まれるようになります。
/cと;$c>や、/maと;$a>のように同じ指定が重複している場合、
オプション、.cmpexdef、スクリプトファイルの定義の順に指定が上書きされますが、
axファイル名指定のディレクトリ情報のみ上書きされません。
sampleフォルダのサンプルも併せて参照してください。