As part of my project to learn common lisp, or at least write more common lisp as part of my day to day work and life, I've
This is a total rip off of this blog post, with a few minor changes:
- I hacked some makefile goodness so that it will automatically create binaries for all .lisp files, and means that you can drop a script in the directory and not have to edit the makefile to get the magic to happen.
- I switched to using buildapp to rather than cl-launch. Buildapp feels a bit more maintained, and I wanted practice using it. Otherwise, I don't think it matters.
The makefile:
TARGETS := $(subst .lisp,,$(wildcard *.lisp)) all:$(TARGETS) %:%.lisp @echo [build]: creating $@ @buildapp --load $< --entry script:run --output $@ @echo [build]: created $@ clean: @rm -f $(TARGETS)
Hello world:
(cl:defpackage #:script (:use #:cl) (:export #:run)) (cl:in-package :script) (defun run (argv) (format t "hello world~%"))
As an aside, I also updated the buildapp aur package.
Pros:
- Common lisp scripts.
- The ability to integrate writing lisp into your existing Linux/Unix workflow and processes.
- Not having to think about packaging or build architecture for trivial operations.
Cons:
- ~40+ meg executable.
- Only one source file per script.