2

ASDF がコンパイルされたファイルを格納するディレクトリを設定したいと思います。私はシェルスクリプトからそれを行うことを好みます。このページによると、環境変数を定義する必要がありますASDF_OUTPUT_TRANSLATIONS

わかりました、ここにあります:

$ export ASDF_OUTPUT_TRANSLATIONS="$HOME/.cache/common-lisp/my-dir/"

しかし、構成をテストしようとすると、機能しません。

$ clisp -x "(asdf:compile-system :my-system)"

出力:

;; Loading file /home/mark/.clisprc.lisp ...
;;  Loading file /home/mark/quicklisp/setup.lisp ...
*** - Uneven number of components in source to destination mapping:
      "/home/mark/.cache/common-lisp/my-dir/"
Bye.

さよなら。まあ、それは可能な出力の1つです。に多くの値を割り当てようとしましたASDF_OUTPUT_TRANSLATIONS。偶数と奇数。小さくて大きい。失敗。そのような構成の例があれば、これはずっと簡単ですが、見つけることができませんでした。

もう 1 つの問題は、ASDF がすべてを 1 つのディレクトリに配置するときに、コンパイルされるシステムが互いに同じ名前のファイルを上書きしないかどうかわからないことです。私が本当に欲しいのは、シェルスクリプトから出力ディレクトリを一時的に設定することです。これにより、ソースファイルがどこにあるかに関係なく、すべてのファイルが予測可能な場所に配置されます。

4

2 に答える 2

2

私は以下で成功しました:

$ export ASDF_OUTPUT_TRANSLATIONS="/:$HOME/.cache/common-lisp/my-dir/"

注 1 : 宛先ディレクトリが存在しない場合があります。この場合、ASDF によって作成されます。

注 2 :この文字列では、*またはのような記号は使用できません。**Directory/は、可能なすべてのディレクトリを示します。

注 3 : ASDF は、次のmy-dirように内部にサブディレクトリを作成します。

/home/mark/.cache/common-lisp/my-dir/home/mark/path/to/source/files/

これはまさに私が望んでいたものではありませんが、シェル スクリプトが配置されているディレクトリのサブディレクトリにソース ファイルを配置することで、ビルドが行われる前にソース ファイルが配置されている場所を検出できるため、重大な問題ではありません。

于 2014-08-16T06:49:08.037 に答える