快速加载和编译系统

时间:2021-01-05 00:45:53

标签: common-lisp asdf quicklisp

我是 Lisp 项目结构的新手,我在 Lisp 中处理了我的第一个更大的项目。这就是我从 quickproject:make-project 制作的项目骨架开始的原因。在这之后,我的第一个想法是创建一个文件夹结构,但我不知道我想怎么做,所以我只做了几个文件来拆分代码。

我将一些代码放在一个名为 pixel.lisp 的文件中,一些放在 gameview.lisp 中,而主循环在 pixelworld.lisp 中。

我的 asd 文件如下所示:

;;;; pixelworld.asd

(asdf:defsystem #:pixelworld
  :description "Describe pixelworld here"
  :author "Your Name <your.name@example.com>"
  :license  "Specify license here"
  :version "0.0.1"
  :serial t
  :depends-on (:sdl2 :cl-opengl)
  :components ((:file "package")
           (:file "pixel")
           (:file "gameview")
           (:file "pixelworld")))

如果我理解正确,这个文件应该告诉 quickproject 当我 ql:quickload 它时如何编译我的系统。并且因为 :serialt 它应该按顺序编译。如果我从上到下手动编译和评估每个文件,这没有任何问题,所以依赖关系没有问题。但是当我 ql:quickload 项目并使用 (in-package :pixelworld) 进入包时,我无法运行 main 函数,因为我系统中的其他表达式没有被评估。有什么我不明白的基本原理,还是有另一个命令我必须与 quicklisp 一起使用才能得到我想要的?提前致谢。 :)

1 个答案:

答案 0 :(得分:1)

就像评论中提到的 Travis Sunderland 和 tfg 一样,在每个文件的顶部都有 (in-package :pixelworld) 很重要。更改后,它完美无缺。

相关问题