Previous: *LOAD-PATHNAME* and *LOAD-TRUENAME* have weird values, help!, Up: Issues with using and extending ASDF to define systems [Contents][Index]
Especially when integrating with outside build systems, it’s useful to have fine-grained control over where ASDF puts output files. The following is an example of a build script that takes the directory to find the source and the path to put the resulting binary at, and compiles a system there.
(in-package :cl-user)
;; Tell ASDF where to find your source files. This may not
;; be necessary if you've already configured this elsewhere.
(asdf:initialize-source-registry
`(:source-registry
:inherit-configuration
(:directory ,(uiop:getenv-absolute-directory "SRC"))))
;; Set the output pathname when building the system.
(defmethod asdf:output-files ((o asdf:image-op)
(system (eql (asdf:find-system foo))))
(declare (ignorable system))
(values (list (uiop:getenv-pathname "OUT")) t))
;; Build the system.
(asdf:operate-on-system 'asdf:program-op foo)
(uiop:quit)