1

我有一个大型项目,其中包含主要二进制文件所依赖的许多库。我想知道在启动板中处理这个问题的正确方法是什么,这样我就可以构建库,然后是主二进制文件,并在 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 及其依赖包)?

谢谢!

4

1 回答 1

1

我自己发现的解决方案是使用配方命令“nest-part”,它允许您从 bzr 分支中取出单个文件夹并将其映射到您的项目中。但是,它不能映射到您的分支的根。

我所做的是创建一个只包含打包信息的分支,以及一个包含“add_subdirectory(src)”的 CMakeLists.txt 文件。然后我从主代码分支(lp:snapcpp)映射,但只映射有问题的项目。例如,这里是 snapcpp 中“受控变量”项目的配方:

# bzr-builder format 0.3 deb-version {debupstream}+{revno}
lp:~snapcpp/snapcpp/controlled_vars
nest-part src lp:snapcpp controlled_vars src

每个子项目都需要一个带有打包信息的分支,但这是一次性设置问题。

于 2013-12-05T04:49:51.443 回答