‘How does one load a personal project using Quicklisp?’

That is a question which keeps on popping up even though it has been answered many times.

The answers usually involve moving your project to quicklisp/local-projects/, use symlinks from local-projects/ to your system or modifying ASDF search paths to include your custom location.

I suspect people keep on asking the question because the usual recommendations have one or more of the following problems:

  1. Programmers have their own methods to organize code. They don’t want to move their code around to accommodate their tools.

  2. Successfully building a project should not depend on the source code being in a specific location.

  3. Building a project on a new computer should not require non-standard environment setups.

  4. It is not possible to work on multiple branches of the same project in parallel if the branches are all located in local-projects/.

  5. ASDF is a lower level tool than Quicklisp. Messing with the ASDF functionality on which Quicklisp depends has the potential to cause problems later.

It is possible to load an ASDF system from any arbitrary location and to avoid all these problems caused by the other methods with the example code below.

(pushnew (truename "/projects/app/") ql:*local-project-directories* )
(ql:register-local-projects)
(ql:quickload :app)