CLisp 21:模块化构建程序
2012-12-15 18:51
295 查看
如果开发一个稍微大一点的程序,就需要管理一大堆的LISP文件。编译顺序、加载顺序对LISP非常重要,顺序错了,要么加载失败,要么构建了错误的程序。
模块化构建程序,就是把LISP源文件划分成多个模块,变成程序->模块->文件三层结构。
推荐使用用asdf管理Lisp程序模块,需要下载asdf.lisp,安装很简单,执行(require ‘asdf)即可。
每个模块都要有一个描述文件,module-name.asd。该文件声明了模块名,和构成该模块的文件列表。可以描述lisp文件之间的依赖关系,也可以描述模块之间的依赖关系。asd文件,类似于VC的工程文件,类似于make文件。
加载模块的方法1:
(push #p”example/” asdf:*central-registry*)
:添加asd文件所在的目录
(asdf:load-system “module-name”)
:加载一个模块
加载模块的方法2:
(load “example/module-name.asd”)
:读取asd文件的内容,不加载模块
(asdf:load-system “module-name”)
:加载一个模块
一般来讲,加载一个模块时,模块的初始化代码会往变量*features*中添加模块名。
在网上下载一个开源代码后,通常都会加载失败。
失败原因1:undefined function defsystem。打开asd文件,在defsystem语句前面加上一行(in-package
:asdf)即可。
失败原因2:Component XXX not found, required by #<SYSTEM YYY>。说的是缺少依赖的模块,打开asd文件,找到defsystem下面的:depends-on,看看到底依赖什么。没办法,只能继续下载更多的文件。建议到http://common-lisp.net/projects.shtml上面下载东西。
模块化构建程序,就是把LISP源文件划分成多个模块,变成程序->模块->文件三层结构。
推荐使用用asdf管理Lisp程序模块,需要下载asdf.lisp,安装很简单,执行(require ‘asdf)即可。
每个模块都要有一个描述文件,module-name.asd。该文件声明了模块名,和构成该模块的文件列表。可以描述lisp文件之间的依赖关系,也可以描述模块之间的依赖关系。asd文件,类似于VC的工程文件,类似于make文件。
加载模块的方法1:
(push #p”example/” asdf:*central-registry*)
:添加asd文件所在的目录
(asdf:load-system “module-name”)
:加载一个模块
加载模块的方法2:
(load “example/module-name.asd”)
:读取asd文件的内容,不加载模块
(asdf:load-system “module-name”)
:加载一个模块
一般来讲,加载一个模块时,模块的初始化代码会往变量*features*中添加模块名。
在网上下载一个开源代码后,通常都会加载失败。
失败原因1:undefined function defsystem。打开asd文件,在defsystem语句前面加上一行(in-package
:asdf)即可。
失败原因2:Component XXX not found, required by #<SYSTEM YYY>。说的是缺少依赖的模块,打开asd文件,找到defsystem下面的:depends-on,看看到底依赖什么。没办法,只能继续下载更多的文件。建议到http://common-lisp.net/projects.shtml上面下载东西。
相关文章推荐
- 浅谈代码分层:构建模块化程序
- 浅谈代码分层:构建模块化程序
- 浅谈代码分层:构建模块化程序
- 浅谈代码分层:构建模块化程序
- 浅谈代码分层:构建模块化程序
- 练习1-21 编写程序entab,将空格串替换成最少数量的制表符和空格,但要保持单词之间的间隔不变。假设制表符终止位的位置与练习1-20的detab程序的情况相同。当使用一个制表符或者一个空格都可以到达下一个制表符终止位时,选用哪种替换字符比较好。
- 第一个程序02 - 零基础入门学习汇编语言21
- Python模块化开发组织代码程序示例
- 构建易于维护的分布式程序
- flash air快速构建android demo测试程序
- 用Gradle 构建你的android程序-依赖管理篇
- Delphi下构建无导入表程序-使用:hash获取API,k32Base等
- idea使用maven构建mybatis程序遇到的几个问题
- JavaScript/jQuery、HTML、CSS 构建 Web IM 远程及时聊天通信程序
- 发布一款基于silverFoxServer构建的一套象棋联机对战程序!
- 微信小程序 —— 模块化方法的总结
- Spring Boot教程(三十三) springboot程序构建一个docker镜像
- Qt模块化笔记之core——QProcess控制外部程序
- 21-纯代码构建Widget
- 利用ant脚本 自动构建svn增量/全量 系统程序升级包