Common lisp ASDF不加载公共Lisp文件
我目前正在用CommonLisp构建一个项目,并且正在使用ASDF。然而,我遇到了一些困难。也就是说,当我运行Common lisp ASDF不加载公共Lisp文件,common-lisp,asdf,Common Lisp,Asdf,我目前正在用CommonLisp构建一个项目,并且正在使用ASDF。然而,我遇到了一些困难。也就是说,当我运行asdf:compilesystem时,它似乎在编译。然后我可以成功地执行asdf:load system。但是,某些文件中的某些函数仍然未定义。为了让他们知道,我必须手动导航到该文件并编译它 这是系统的声明。有人能告诉我我做错了什么吗 (defsystem "xxx-xxxx" :version "0.1.0" :author "" :license "" :depen
asdf:compilesystem
时,它似乎在编译。然后我可以成功地执行asdf:load system
。但是,某些文件中的某些函数仍然未定义。为了让他们知道,我必须手动导航到该文件并编译它
这是系统的声明。有人能告诉我我做错了什么吗
(defsystem "xxx-xxxx"
:version "0.1.0"
:author ""
:license ""
:depends-on ("cl-mongo" "hunchentoot" "clack" "ningle" "cl-json" "hermetic" "lack-middleware-session" "cl-markup")
:components ((:module "src"
:components
((:file "packages")
(:file "lisp-utils")
(:file "xxx-xxxx" :depends-on ("packages"))
(:file "database" :depends-on ("packages"))
(:file "database-config" :depends-on ("packages"))
(:file "server" :depends-on ("packages"))
(:file "clack" :depends-on ("packages"))
(:file "routes/activities" :depends-on ("packages"))
(:file "route-processors" :depends-on ("packages")))))
:description ""
:long-description
#.(read-file-string
(subpathname *load-pathname* "README.markdown"))
:in-order-to ((test-op (test-op "xxx-xxxx-test"))))
特别是,我对文件
路由/活动
和可能的路由处理器
有问题,鉴于我使用asdf的经验,您系统定义中唯一的问题是“路由/活动”文件,因为子文件夹被定义为模块。此文件应修复您的问题:
(defsystem "xxx-xxxx"
:version "0.1.0"
:author ""
:license ""
:depends-on ("cl-mongo"
"hunchentoot"
"clack"
"ningle"
"cl-json"
"hermetic"
"lack-middleware-session"
"cl-markup")
:components ((:module "src"
:components
((:file "packages")
(:file "lisp-utils")
(:file "xxx-xxxx"
:depends-on ("packages"))
(:file "database"
:depends-on ("packages"))
(:file "database-config"
:depends-on ("packages"))
(:file "server"
:depends-on ("packages"))
(:file "clack"
:depends-on ("packages"))
(:module "routes"
:components ((:file "activities"))
:depends-on ("packages"))
(:file "route-processors"
:depends-on ("packages")))))
:description ""
:long-description
#.(read-file-string
(subpathname *load-pathname* "README.markdown"))
:in-order-to ((test-op (test-op "xxx-xxxx-test"))))
回应你最后的评论。出现此异常的原因是依赖项在依赖项父项所在的列表中解析。因此,如果您说“活动”依赖于“包”,但模块中有“活动”,asdf将搜索该模块/子文件夹中的包,但由于其不存在,因此无法找到它。不管它是否专横都无关紧要,这就是它的工作原理。这也是有意义的,因为模块通常描述一个逻辑一致的单元,因此该单元的依赖关系应该是相似的,否则您可能需要重新考虑您的项目结构。根据我在asdf方面的经验,您的系统定义中唯一不重要的是“路由/活动”文件,因为子文件夹被定义为模块。此文件应修复您的问题:
(defsystem "xxx-xxxx"
:version "0.1.0"
:author ""
:license ""
:depends-on ("cl-mongo"
"hunchentoot"
"clack"
"ningle"
"cl-json"
"hermetic"
"lack-middleware-session"
"cl-markup")
:components ((:module "src"
:components
((:file "packages")
(:file "lisp-utils")
(:file "xxx-xxxx"
:depends-on ("packages"))
(:file "database"
:depends-on ("packages"))
(:file "database-config"
:depends-on ("packages"))
(:file "server"
:depends-on ("packages"))
(:file "clack"
:depends-on ("packages"))
(:module "routes"
:components ((:file "activities"))
:depends-on ("packages"))
(:file "route-processors"
:depends-on ("packages")))))
:description ""
:long-description
#.(read-file-string
(subpathname *load-pathname* "README.markdown"))
:in-order-to ((test-op (test-op "xxx-xxxx-test"))))
回应你最后的评论。出现此异常的原因是依赖项在依赖项父项所在的列表中解析。因此,如果您说“活动”依赖于“包”,但模块中有“活动”,asdf将搜索该模块/子文件夹中的包,但由于其不存在,因此无法找到它。不管它是否专横都无关紧要,这就是它的工作原理。这也是有意义的,因为模块通常描述一个逻辑一致的单元,因此该单元的依赖关系应该类似,否则您可能需要重新考虑您的项目结构。路由/活动是否位于子目录中,或者您是否有一个名为“路由/活动/lisp”的文件?如果是前者,可能使用模块?它是一个子目录。使用模块会是什么样子?我之前尝试过,但一直出现错误。与您在上面使用
src
-module:(:module“routes”:依赖(“packages”):组件(:file“activities”)
时所做的一样,此条目将替换“(:file“routes/activities”)”?无限将花费太长时间,但是我认为它可以任意深入。routes/activities是否位于子目录中,或者您是否有一个名为“routes/activities/lisp”的文件?如果是前者,可能使用模块?它是一个子目录。使用模块会是什么样子?我之前尝试过,但一直出现错误。与您在上面使用src
-module:(:module“routes”:dependens(“packages”):components(:file“activities”)
时所做的一样,这个条目将取代“(:file“routes/activities”)?无限将花费太长时间,但我认为它可以任意深入。