我刚接触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")))如果我理解正确的话,这个文件应该在我ql:quickload它的时候告诉quickproject如何编译我的系统。因为:serial是t,所以它应该按顺序编译。如果我从上到下手工编译和评估每个文件,这将没有任何问题,所以没有依赖关系的问题。但是,当我使用(in-package :pixelworld)对项目进行ql:quickload并进入包中时,我不能运行main函数,因为我系统中的其他表达式都没有求值。关于这一点,有没有什么基本的我不理解的地方,或者是我必须在quicklisp中使用另一个命令才能得到我想要的东西?提前谢谢。:)
发布于 2021-01-06 09:34:05
就像Travis Sunderland和tfg在评论中提到的那样,在每个文件的顶部拥有( in -package :pixelworld)是很重要的。在改变之后,它运行得天衣无缝。
https://stackoverflow.com/questions/65571790
复制相似问题