Wie kann ECL umfassen ASDF Abhängigkeiten in einer ausführbaren Datei?
-
06-09-2019 - |
Frage
Ich habe diesen 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*
meine hinaus ist zu stumpwm.asd
verwendet, um die ASDF Komponenten in dieser Datei zu erzeugen und die
richtig geordnete Liste der Dateien oben.)
Es ist einfach nicht:
... 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.
Ich bin an dem Punkt, wo ich nur Fehler der Lösung bin, die ich eingeführt
mit früheren Versuchen. Wenn Sie schon ein Programm mit ECL aufgebaut,
enthalten Abhängigkeiten, bitte zeigen Sie mir, wie Sie es getan haben. Ich sehe, wie
Ich kann die Abhängigkeiten Punt und laden, wenn stumpwm
beginnt (auch
ohne meine ~/.eclrc
zu Laden, die ASDF sagt, wo zu finden
diese). Aber die sollte möglich sein.
Lösung
Oh, wow. Hier ist die Antwort :
-
Löschen
ecl-make.lisp
, Änderungen rückgängigstumpwm.asd
-
ecl -eval '(asdf:make-build :stumpwm :type :program)'
Das ist es. [ASDF keine asdf:build-op
sehen, aber.]
EDIT: na ja, es braucht auch einen Prolog. ecl-Beispiele jetzt protzt asdf:make-build