我有一个Common Lisp项目,它依赖于在GitHub上托管的C / C ++库。我需要克隆,配置和建立这种依赖关系,以便我的项目能够工作,我更喜欢在Common Lisp中执行此操作,而不是提供shell脚本。
为Common Lisp项目自动执行此操作的最佳方法是什么?我尝试用INFERIOR-SHELL复制我的shell命令,但它在git clone
上崩溃了。
答案 0 :(得分:1)
一些可能性:
如果您的项目本身是Git仓库(GitHub或其他),请将C库作为子模块。
git submodule add --name clib git@github.com:someone/clib ./src/clib
或者,也许使用drakma
或您喜欢的HTTP客户端(甚至可能是curl
或wget
)来从GitHub中删除源代码的tarball而不是克隆。 (假设您只对构建包而不是编辑包感兴趣。)
从Makefile
运行整个结帐和构建流程。 inferior-shell
可能是可行的;我通常使用uiop:run-program
,因为ASDF提供了它,只需呼叫make
。
```
all: src/clib/lib/libclib.so
src/clib/lib/libclib.so: src/clib/Makefile
$(MAKE) -C src/clib all
src/clib/Makefile: src/clib/configure
cd src/clib; ./configure
src/clib/configure: src/clib/configure.in
cd src/clib; autoconf
src/clib/configure.in:
git clone https://github.com/someone/clib ./src/clib
```
你没有提到你从git clone
得到的错误,但是我要猜测它期待用户输入(例如,解锁你的SSH钥匙串) 。假设它是一个公开可见的项目,您可能最好使用https:
URI而不是SSH(git@github.com:
)版本。