I am having trouble using the asdf
build tools with common lisp. Here is my fractals.asd
file:
(defpackage :fractals
(:use :cl :asdf :cl-opengl :cl-glu :cl-glut)
(:export :frac-tree :draw-tree))
(in-package :fractals)
;----------------------------------------------------------
(defsystem fractals
:name "fractals"
:version "0.0.0"
:serial t
:components ((:file "frac-tree")
(:file "fractal-lab")))
Both the ffiles fract-tree.lisp
and fractal-lab.lisp
have the statement (in-package :fractals)
at the very beginning of the file. However, I am automatically getting an error saying The name "CL-OPENGL" does not designate any package.
I don't understand why this is wrong. Furthermore, if I don't include these libraries, then I have to manually require them myself... I created a directory called: ~/.config/common-lisp/source-registry.conf.d/
where I placed a file called fractals2.conf
which contains the following:
(:directory "~/lisp_proj/fractals2/")
This is the directory of my fractals.asd
file as shown above. Apparently, this is supposed to tell asdf
where my user-defined systems are located. I followed this tutorial.
asdf
to find my user-defined systems so that I do not have to manually load them?Thanks for all the help!
You need to declare your dependencies in the defsystem
with a :depends-on
clause. The :use
clause of the defpackage
only makes names of already loaded packages available, but won't load them.
BTW, your .asd
file should not include the defpackage
of the main package. While it makes sense to declare a special package to run the defsystem
s in there, regular packages should be declared in .lisp
files.
EDIT: This may also solve your second problem. If not, it's probably because ASDF doesn't automatically expand the ~
character in paths. In that case, replace it with the actual path of your home directory.