4

我有这个 ecl-make.lisp:

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

(defun系统对象(系统)
  (循环中的组件(asdf:module-components(asdf:find-system system))
    for pathname = (asdf:component-pathname 组件)
    for directory = (路径名-目录路径名)
    for name = (pathname-name pathname)
    when (equal "lisp" (pathname-type pathname))
    收集(make-pathname :directory directory :type "o" :name name)))

(c:构建程序“stumpwm”:lisp文件
  (连接'列表
    (系统对象:cl-ppcre)
    (系统对象:clx)
    (mapcar (lambda (组件))
              (连接'字符串组件“.o”))
      stumpwm-system::*组件*))
  :epilogue-code '(unwind-protect (stumpwm:stumpwm) (ext:quit)))

stumpwm-system::*components*是我对 的补充stumpwm.asd,用于在该文件中生成 ASDF 组件以及上面正确排序的文件列表。)

它只是失败了:

...您在 (system-objects ...) 时收到的相同消息
...从 c:build-program 中排除 [它在
...这种情况,但当然 CL-PPCRE 和 CLX 不可用。]
初始化时出错:
找不到二进制文件的入口点。

我已经到了只解决以前尝试引入的错误的地步。如果您使用 ECL 构建了一个包含依赖项的程序,请告诉我您是如何做到的。我看到了如何在启动时stumpwm启动和加载依赖项(即使没有加载 my ~/.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 回答