Pergunta

Eu tenho esta ecl-make.lisp:

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

(defun system-objects (system)
  (loop for component in (asdf:module-components (asdf:find-system system))
    for pathname = (asdf:component-pathname component)
    for directory = (pathname-directory pathname)
    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
  (concatenate 'list
    (system-objects :cl-ppcre)
    (system-objects :clx)
    (mapcar (lambda (component)
              (concatenate 'string component ".o"))
      stumpwm-system::*components*))
  :epilogue-code '(unwind-protect (stumpwm:stumpwm) (ext:quit)))

(stumpwm-system::*components* é a minha além stumpwm.asd, usado para gerar os componentes ASDF nesse arquivo eo lista de arquivos acima corretamente ordenada.)

Ele simplesmente falhar:

... same messages you get when (system-objects ...) are
... excluded from the c:build-program [it compiles in
... this case, but of course CL-PPCRE and CLX are unavailable.]
An error occurred during initialization:
Cannot find out entry point for binary file.

Eu sou ao ponto onde eu só estou resolvendo erros que eu apresentei com tentativas anteriores. Se você construiu um programa com ECL que dependências incluídos, por favor me mostre como você fez isso. Eu vejo como Posso punt e carregar as dependências quando stumpwm começa (mesmo sem carregar minha ~/.eclrc, que conta ASDF onde encontrar estes). Mas esta deve ser possível.

Foi útil?

Solução

Oh, wow. Aqui está a resposta :

  1. ecl-make.lisp Excluir, reverter muda para stumpwm.asd

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

É isso. [ASDF não vê uma asdf:build-op, no entanto.]

EDIT: bem, ele também precisa de um prólogo. ECL-exemplos agora mostra asdf:make-build

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top