【发布时间】:2013-12-02 16:57:37
【问题描述】:
我有一个大型项目,其中包含许多主要二进制文件所依赖的库。我想知道在启动板中处理这个问题的正确方法是什么,以便我可以构建库,然后是主二进制文件并在 ppa 上提供每个 debian pacakge。
您可以在 lp:snapcpp (https://code.launchpad.net/snapcpp/) 查看相关项目。在 snacpp 中,我们有“snapwebsites”,这是一个 C++ CMS 系统,它通过我们的库“libQtCassandra”连接到 Cassandra 数据库。 “snapwebsites”依赖于 libQtCassandra,就像它依赖于 libltd 和其他一样。这些库中的每一个都需要是单独的 debian 包本身。每个项目都有自己的“debian”文件夹,但此时没有根 debian 文件夹。
我怎样才能让它在需要根 debian 文件夹的启动板上工作?我是否需要在根目录中构建一个列出每个依赖项的 debian 项目?如果没有,我是否需要使用 bzr 将每个项目分解为自己的分支?如果我做后者,我如何为构建调用那些依赖 debs(换句话说,我如何告诉 snapwebsites 的配方它需要安装 libQtCassandra 及其依赖包)?
谢谢!
【问题讨论】:
-
这些依赖项在标准主存储库中可用吗?
-
Braiam:不,依赖项是主项目的一部分。查看主干中的每个子项目:bazaar.launchpad.net/~doug/snapcpp/trunk/files 例如,snapCMakeModules 是一个源包依赖项,我们将自定义模块安装到 cmake 的搜索路径中。所有 snapcpp 项目都依赖它。或者另一个例子,查看 advgetopt,它允许 C++ 友好的命令行解析(它依赖于受控变量,也在同一个项目中)。
-
听起来你应该将每个依赖项放在一个单独的项目中?
-
Triplee:如果我将它们分成许多子项目(这本身就是一个问题,因为 bzr 分支希望来自 git 项目的根目录),我仍然会遇到同样的问题。如果我创建依赖于受控变量的 advgetopt,我如何告诉 launchpad.net 构建系统它需要首先构建和安装受控变量?
标签: linux ubuntu debian deb launchpad