4

私はこのecl-make.lispを持っています:

(asdf:oos'asdf:compile-op:stumpwm)

(defunシステム-オブジェクト(システム)
  ((asdf:module-components(asdf:find-system system))のコンポーネントのループ
    パス名の場合=(asdf:component-pathname component)
    ディレクトリの場合=(パス名-ディレクトリパス名)
    for name =(pathname-name pathname)
    when(equal "lisp"(pathname-type pathname))
    collect(make-pathname:directory directory:type "o":name name)))

(c:build-program "stumpwm":lisp-files
  (連結'リスト
    (システムオブジェクト:cl-ppcre)
    (システムオブジェクト:clx)
    (mapcar(ラムダ(コンポーネント)
              ('文字列コンポーネント".o"を連結します))
      stumpwm-system :: * components *))
  :epilogue-code'(unwind-protect(stumpwm:stumpwm)(ext:quit)))

(これstumpwm-system::*components*は私の追加でstumpwm.asdあり、そのファイル内のASDFコンポーネントと上記のファイルの適切な順序のリストを生成するために使用されます。)

それは単に失敗します:

...(system-objects ...)が
... c:build-programから除外[コンパイルされます
...この場合ですが、もちろんCL-PPCREとCLXは使用できません。]
初期化中にエラーが発生しました:
バイナリファイルのエントリポイントが見つかりません。

私は、以前の試みで導入したエラーのみを解決しているところまで来ています。依存関係を含むECLを使用してプログラムを作成した場合は、その方法を教えてください。開始時に依存関係をパントしてロードする方法がわかりますstumpwm(ロードしなくても~/.eclrc、ASDFに依存関係の場所を指示します)。しかし、これは可能であるはずです。

4

1 に答える 1

4

ああすごい。 答えは次のとおりです。

  1. を削除ecl-make.lispし、変更を元に戻すstumpwm.asd

  2. ecl -eval '(asdf:make-build :stumpwm :type :program)'

それでおしまい。[しかし、ASDF は を認識しませんasdf:build-op。]

編集:まあ、プロローグも必要です。ecl-examplesが披露されるようになりましたasdf:make-build

于 2009-02-24T02:19:52.060 に答える