我尝试过asdf:make
,但是构建系统对我来说太像C了。我在寻找更像Rust的Cargo或c++ Ninja的东西,它或多或少有点麻烦。
我偶然发现了Roswell,在用它写了几个测试脚本后,我觉得它很棒。
我想如果我能把我的依赖包和Roswell编译的二进制文件一起打包就太好了。我看了文档,我似乎找不到它。
TLDR:我如何使用Roswell包含依赖关系?
这个问题的答案是,如果没有其他工具,您就不需要。Roswell既不是构建系统,也不是库管理器。
Roswell包含了ASDF,它是无处不在的Common Lisp构建系统。我不知道你对asdf:make
有什么不同意,但我坚持认为它已经更像Cargo而不是Make了。
关于ASDFmake
是一个麻烦,这与我的个人经验完全不匹配。如果你能描述出是什么让你觉得很麻烦,那么也许你能得到更直接的建议。如果麻烦是库管理(手动获取tarball,克隆Git仓库,…),然后继续读下去!
幸运的是,Roswell还包括Quicklisp库管理器。默认情况下,它不会处理"project-local";像在NPM或Ruby Bundler中那样依赖,但它在从Quicklisp库存储库中获取和安装库及其依赖方面做得很好。你可以假设只要你用Roswell运行一个脚本,Quicklisp就会出现,所以你可以放心地使用它来管理脚本的依赖关系。
据我所知,目前还没有一个工具可以将这两个功能结合为一个Common Lisp。因此,您应该使用ASDF来构建您的程序的独立可执行文件,您可以使用Quicklisp来获取和安装依赖库。
还有另外两个工具可以帮助您管理Common Lisp项目中的依赖项:
- Qlot可以安装特定项目的本地依赖项,因此如果需要,您可以在不同的项目中拥有给定库的不同版本。
- CLPM类似于Qlot,但可能更"整洁"一点。而且设计得很彻底。它可以在全局范围内安装包,而不局限于特定的项目,而且它还在推广一种名为CLPI的包元数据格式,作为Quicklisp做事方式的替代方案。