我有一个大型项目,其中包含许多主要二进制文件所依赖的库。我想知道在 launchpad 中处理这个问题的正确方法是什么,这样我就可以构建库,然后是主二进制文件,并在 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 将每个项目分解为自己的分支?如果我选择后者,我如何为构建调出那些依赖 deb(换句话说,我如何告诉 snapwebsites 的配方它需要安装 libQtCassandra 及其依赖包)?
谢谢!
最佳答案
我自己发现的解决方案是利用配方命令“nest-part”,它允许您从 bzr 分支中取出一个文件夹并将其映射到您的项目中。但是,它不能映射到您的分支的根目录。
我所做的是创建一个只有打包信息的分支,以及一个包含“add_subdirectory(src)”的 CMakeLists.txt 文件。然后我从主代码分支 (lp:snapcpp) 映射,但只映射有问题的项目。例如,这里是 snapcpp 中“controlled_vars”项目的配方:
# bzr-builder format 0.3 deb-version {debupstream}+{revno}
lp:~snapcpp/snapcpp/controlled_vars
nest-part src lp:snapcpp controlled_vars src
每个子项目确实需要一个包含打包信息的分支,但这是一次性设置问题。
关于linux - launchpad.net : Multiple dependencies in the same large project. ..?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20333656/