% Function COMPILE-FILE
Function COMPILE-FILE
compile-file input-file
&key output-file verbose print external-format
=> output-truename, warnings-p, failure-p
input-file - パス名指定子(デフォルトでは未指定の要素は
*default-pathname-defaults*の値から取得し埋められます)。
output-file - パス名指定子。デフォルトは実装依存。
verbose - generalized-boolean。デフォルトは*compile-verbose*の値。
print - generalized-boolean。デフォルトは*compile-print*の値。
external-format - 外部ファイルフォーマット指定子。デフォルトは:default。
output-truename - パス名(出力ファイルのtruename)か、
nil。
warnings-p - generalized-boolean
failure-p - generalized-boolean
compile-fileは、
input-fileで指定されたファイルの内容を、
output-fileによって指定されたファイルの位置へ
実装依存のバイナリデータに変換します。
input-fileで示すファイルはソースファイルでなければなりません。
output-fileは出力パス名を指定することができます。
コンパイルされたコードを出力する
コンパイルファイルの実際のパス名は、
compile-file-pathnameを呼び出されたかのように計算されます。
もしinput-fileかoutput-fileが論理パス名のとき、
それはtranslate-logical-pathnameが呼び出されたかのように
物理パス名に変換されます。
もしverboseがtrueのとき、
compile-fileはコメントのフォーム(例えば先頭にセミコロン) で
メッセージを標準出力に対して
どのようなファイルがコンパイルされたかや、
その他の有益な情報などを印刷します。
もしverboseがfalseのときは、そのような情報は印刷されません。
もしprintがtrueのとき、
コンパイルされるファイル内の
トップレベルフォームについての情報を、
標準出力に印刷します。
どのようなものが印刷されるかの
正確な内容は実装依存ですが、
それでも何らかの情報が印刷されます。
もしprintがnilのときは
何の情報も印刷されません。
external-formatは、
ファイルを開くときに使われる外部ファイルフォーマットを指定します。
関数openをご確認ください。
結果のコンパイルされたファイルは、
改めて外部ファイルフォーマットの指定をせずに
ロードすることができるので、
compile-fileとloadは
このような方法を実現するために協調しなければなりません。
関数loadをご確認ください。
compile-fileは*readtable*と*package*に対して、
ファイル処理する前に保持されていた値に束縛します。
*compile-file-truename*は、
compile-fileによって束縛が行われ、
その内容はコンパイルされているファイルのパス名のtruenameです。
*compile-file-pathname*は
compile-fileによって束縛が行われ、
その内容はcompile-fileの最初の引数と
デフォルト値がマージされたものを示します。
つまり(pathname (merge-pathnames input-file))です。
コンパイルされたファイル内に含まれるコンパイルされた関数は、
Lispがそのコンパイルされたファイルをロードしたときに使用できるようになります。
コンパイラーによって処理されたどのような関数定義でも、
それは#'(lambda ...)フォームや、
fletとlabelsによって生成されたローカル関数、
defunフォームなどの結果は、
型compiled-functionのオブジェクトです。
compile-fileの返却値の主値であるoutput-truenameは、
出力ファイルのtruenameか、
もしファイルが生成できなかったときはnilです。
2つめの返却値であるwarnings-pは、
コンパイラーによって型errorか
warningのコンディションが
検出されなかったときはfalseを、
それ以外のときはtrueを返却します。
3つめの返却値であるfailure-pは、
コンパイラーによって型errorか
warning(style-warning以外)コンディションが
検出されなかったときはfalseを、
それ以外のときはtrueを返却します。
ファイルコンパイラーによって どのようにファイルを処理するかについての 一般的な情報は3.2.3. ファイルのコンパイルをご確認ください。
ファイルコンパイラーによってコンパイルされるプログラムは、
ただ外部化可能なオブジェクトのみが含まれます。
そのようなオブジェクトの詳細については3.2.4. ファイルコンパイル時のリテラルオブジェクトをご確認ください。
どのようにして外部化可能なオブジェクトの集合を拡張するかについては
関数make-load-formと3.2.4.4. 外部オブジェクトの制約の追記をご確認ください。
なし。
*error-output*,
*standard-output*,
*compile-verbose*,
*compile-print*
コンピューターのファイルシステム
コンパイル処理中のエラーの検出についての情報は、 3.2.5. コンパイラーの例外状況をご確認ください。
もし(wild-pathname-p input-file)がtrueのとき、
型file-errorのエラーが通知することができます。
入力としてソースファイルをオープンしようとしたか、
あるいは出力としてコンパイルされるファイルをオープンしようとしたときに
失敗したときは、
型file-errorのエラーが通知されます。
compile,
declare,
eval-when,
pathname,
logical-pathname,
20.1. ファイルシステムの説明,
19.1.2. ファイル名としてのパス名
なし。