构建复杂C ++ / Python项目的工具

时间:2018-03-28 22:21:55

标签: python c++ docker build build-tools

上下文

我正在开发一个由多个C ++和Python项目组成的项目。典型的组件例如由以下组成:

  • 纯C ++库(取决于其他本机库)
  • C / C ++ Python绑定(取决于本机库)
  • 纯Python胶水代码(取决于其他Python库和Python绑定)

组件可以依赖于其他组件。

当前状态

使用CMake构建C ++组件并生成RPM文件。 Python组件使用setuptool打包到Python轮子。最终应用程序打包在Docker镜像中。

您可以猜到,这种异构环境很难维护:

  • 依赖管理非常困难且容易出错。使用RPM功能管理C ++依赖项。使用setuptool的Python依赖项。
  • 构建结果部署很难。维护了2台服务器,1台用于RPM存储库,1台用于Pypi存储库
  • 安装很困难:无法保证RPM和Python组件之间的完整性。由于没有统一的依赖关系管理,因此很难获取和安装应用程序
  • 控制版本系统中的版本标记也很困难:您必须更改Python和C ++项目中的版本。我们真的需要一个切入点。

我确定那里的一些人已经遇到过这种问题,我正在寻找一个好的和持久的技术解决方案。我们已经尝试使用Maven(概念验证)管理这些项目,但我们对这个构建系统的经验并不是很积极:它缺乏灵活性,而且我们还没有找到如何管理自定义工件(RPM,车轮)和最终安装。

对于如何在此上下文中设计可维护的构建系统,您有什么想法吗?

0 个答案:

没有答案