如果用Common Lisp(以下简称CL)编写大型程序的话,肯定会遇到如下两个问题:
1,多个源文件如何组织,编译和依赖。
2,如何引入其他的Lisp软件包。
这就不得不引入ASDF和Quicklisp两个工具了。
项目构建工具-ASDF
ASDF是Another System Definition Facility的缩写。这个名字够个性(程序员都知道为什么)。ASDF用来描述Lisp源文件之间的相互依赖关系,进而保证程序的各个部分能够按照正确的顺序进行编译、加载、测试等等。可以近似地把ASDF看作编写C语言程序时所用到的GNU Make工具和Java的Ant工具。ASDF最新已经发布了ASDF 2,ASDF 2指的是2.000及以后的发布版本;1.656到1.728之间的发布版本是ASDF 2的开发版;ASDF 1指的是1.369之前的版本。
许多Lisp实现都包含了ASDF,可以使用Common Lisp的require函数加载ASDF模块:(require :asdf)或(require 'asdf)(我所使用的SBCL 1.0.40和Clisp 2.48在启动的时候都会自动加载ASDF模块,因此无需手工加载)。可以使用(asdf:asdf-version)函数查看ASDF是否加载成功,如果此函数引发一个异常,那么要么ASDF没有加载成功,要么正在使用的是ASDF 1的较旧的版本。如果Lisp实现中没有包含ASDF,可以使用(load "/path/to/asdf.lisp")手动加载ASDF。
具体的使用方法 参考2 有介绍。不多说了。
另一个工具是MK-DEFSYSTEM(ht
1,多个源文件如何组织,编译和依赖。
2,如何引入其他的Lisp软件包。
这就不得不引入ASDF和Quicklisp两个工具了。
项目构建工具-ASDF
ASDF是Another System Definition Facility的缩写。这个名字够个性(程序员都知道为什么)。ASDF用来描述Lisp源文件之间的相互依赖关系,进而保证程序的各个部分能够按照正确的顺序进行编译、加载、测试等等。可以近似地把ASDF看作编写C语言程序时所用到的GNU Make工具和Java的Ant工具。ASDF最新已经发布了ASDF 2,ASDF 2指的是2.000及以后的发布版本;1.656到1.728之间的发布版本是ASDF 2的开发版;ASDF 1指的是1.369之前的版本。
许多Lisp实现都包含了ASDF,可以使用Common Lisp的require函数加载ASDF模块:(require :asdf)或(require 'asdf)(我所使用的SBCL 1.0.40和Clisp 2.48在启动的时候都会自动加载ASDF模块,因此无需手工加载)。可以使用(asdf:asdf-version)函数查看ASDF是否加载成功,如果此函数引发一个异常,那么要么ASDF没有加载成功,要么正在使用的是ASDF 1的较旧的版本。如果Lisp实现中没有包含ASDF,可以使用(load "/path/to/asdf.lisp")手动加载ASDF。
具体的使用方法 参考2 有介绍。不多说了。
另一个工具是MK-DEFSYSTEM(ht