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. ファイル名としてのパス名
なし。