書式
makestrs [-f source] [-abioptions ...]説明
makestrs コマンドは文字列テーブルの C 言語ソースとヘッダを作成する。 -f source オプションが指定されなければ、 makestrs は標準入力から入力を行う。 C のソースファイルは常に標準出力に書き出される。 makestrs は、ソースファイルで指定されている C のヘッダファイルを出力する。 以下のオプションを指定することができる: -sparcabi, -intelabi, -functionabi, -arrayperabi, -defaultabi-sparcabi は、SPARC Compliance Definition に準拠している SPARC プラットフォーム で使われる(SVR4/Solaris 等)。
-intelabi は、System V Application Binary Interface に準拠している Intel プラッ トフォームで使われる(SVR4 等)。
-earlyR6abi は、ベンダが X11R6公式パッチ11 (またはそれ以前のもの)と X11R6公式パッ チ 12(またはそれ以降のもの)の間でバイナリ互換性を保ちたいと考える場合に、 -intelabi に付け加えて使われる。
-functionabi オプションを指定すると、文字列テーブルに関数 ABI が生成される。性能が 大幅に悪化するので、この機構は使わない方が良い。
-arrayperabi を用いると、文字列ごとに別々の配列が生成される。makestrs にコンパイル オプション -DARRAYPERSTR が付けられていた場合には、これがデフォルトの 動作である(こうなっていることはない)。
-defaultabi を使うと、makestrs が -DARRAYPERSTR オプション付きでコンパイルされてい ても、強制的に「通常の」文字列が生成される。makestrs が -DARRAYPERSTR オプション付きでコンパイルされることはまず無いので、ABI オプションが指 定されていないときは、これがデフォルトの動作である。
書式
文字列リストファイルの記法を以下に示す([] で括られた要素は省略できる):- #prefix <text>
- #feature <text>
- #externref <text>
- #externdef [<text>]
- [#ctempl <text>]
- #file <filename>
- #table <tablename>
- [#htempl]
- <text>
- <text>
- [#table <tablename>
- <text>
- <text>
-
...
- #table <tablename>
-
...]
- [#file <filename>
-
...]
ワード内には1つ以上の #file ディレクティブを持つことができる。#file の それぞれは 1つ以上の #table ディレクティブを持つことができる。
#prefix ディレクティブは、makestr がそれぞれの定義の前に追加する文字列 を決定する。
#feature ディレクティブは、makestr が機能テストマクロ(例えば、 X[TM]STRINGDEFINES)のために使う文字列を決定する。
#externref ディレクティブは、makestr が外部宣言のために使う文字列を指 定する。これは通常 "extern" になるが、Motif においては "externalref" となる。
#externdef ディレクティブは、makestr が宣言のために使う文字列を指定す る。これは通常空文字列になるが(この場合には、"#externdef " のように末 尾に空白が必要な点に注意すること)、Motif においては "externaldef(_xmstrings)"となる。
#ctmpl ディレクティブは、生成される C 言語のソースのテンプレートとして 使われるファイルの名前を決定する。
#file <filename> ディレクティブのそれぞれは、コマンド行オプション で指定された適切な定義を含む名前によって、対応するヘッダとなる。 全てのヘッダファイルでの定義に対する宣言を含む、1つの C 言語のソースが 標準出力に出力される。
#htmpl ディレクティブは生成される C 言語のヘッダのテンプレートとして使 われるファイルの名前を決定する。
#table <tablename> ディレクティブのそれぞれは、ABI に従って処理される。 ほとんどのプラットフォームにおいては、全てのテーブルは繋げられて、その ファイルに対する最初のテーブルの名前を持つ1つのテーブルになる。 Intel ABI に準拠するため、指定された名前を使って別々のテーブルが生成さ れる。
#ctmpl と #htmpl ディレクティブによって指定されたテンプレートファイル は、テンプレートファイルから適切なファイルへと行ごとにコピーすることに よって処理される。文字列 <<<STRING_TABLE_GOES_HERE>>> を含む行は出力ファイルにはコピーされない。その後に、適切なデータが出力 ファイルにコピーされ、そしてテンプレートファイルの残りの部分が出力ファ イルにコピーされる。