0

我有一个 Common Lisp 项目,它依赖于托管在 GitHub 上的 C/C++ 库。我需要克隆、配置和创建此依赖项才能使我的项目正常工作,我更愿意在 Common Lisp 中执行此操作,而不是提供 shell 脚本。

为 Common Lisp 项目自动执行此操作的最佳方法是什么?我尝试使用 INFERIOR-SHELL 复制我的 shell 命令,但它在git clone.

4

2 回答 2

1

一些可能性:

  • 如果您的项目本身就是一个 Git 存储库(GitHub 或其他),请将 C 库设置为子模块。

    git submodule add --name clib git@github.com:someone/clib ./src/clib

  • 或者,也许使用drakma或您喜欢的 HTTP 客户端(甚至,也许,使用curlwget)从 GitHub 拉取源代码的 tarball,而不是克隆。(假设您只对构建包感兴趣,而不是编辑包。)

  • Makefile. inferior-shell可能是可行的;我通常使用uiop:run-programASDF 提供它,只需调用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:) 版本。

于 2015-12-22T22:49:10.250 回答
0

在普通的 lisp 上没有这样的东西可以很好地工作。从这篇文章中,common lisp 生态系统的实际状态,在构建系统部分:

未来的工作:

更多 ASDF 组件,例如用于构建 C/C++ 文件。用于下载 Lisp 库所需的外部 C 库的独立于平台的包管理器将非常有用。

您应该从项目内部的依赖项中查看。

于 2015-12-21T13:14:22.067 回答