2010-02-19 79 views
7

我们公司需要的是一种用于Linux/C++的版本管理工具。我们的产品由多个库和配置文件组成。在这里,我将列出的基本功能,我们希望这样的系统有:用于Linux的版本管理系统

  • 能够跟踪依赖,容易增加库其相关性得到了他们的主版本增加的主要版本。它应该在内部构建某种依赖关系图,以便知道哪些人受到更新的影响。

  • 知道如何构建它处理的产品。无论是特定的构建文件还是更好的 - 读取和理解makefile的能力。

  • 与SVN一起工作,以便它可以从那里检查新版本并进行构建。

  • 生成一些安装程序 - 以rpm或tar.gz格式。为此目的,它应该能够理解rpm spec文件格式。

目前我们正在研究这种已经非常实用的工具。但是我相信我们的任务不是独一无二的,应该有一些工具可以完成这项工作。

回答

1

在我正在开发的项目中,我们使用cmake和其他Kitware工具来处理本机代码(C++)的大部分问题。逐点应答:

  • cmake脚本处理我们不同项目的依赖关系。我们有一个依赖关系图,但我不知道是自制脚本还是cmake提供的功能。

  • 那么cmake生成有关平台的makefile。如果在开发过程中要求这样做,我会为eclipse cdt和visual studio生成项目。

  • Cmake有几个工具,ctest和cdash,我们用它来做日常构建,看看测试如何进行。

  • 为了创建安装程序cmake有cpack。从一个脚本中,它可以在Linux中生成tar.gz,deb或rpm文件,或者自动生成NSIS脚本以在Windows中生成安装程序。

对于Java代码,我们用maven和已经被这里提到哈德森。

0

Maven有一个native code plugin。我认为它不会做你想做的所有事情,但它很好地跟踪版本号的依赖关系,将会建立文物,它会与你的VCS一起工作。

0
  • 不知道
  • 的cmake/scons的:我用cmake的,但我完全不喜欢它,但我听说过scons的真是好东西。但是scons是基于python的,所以你需要在build/dev机器上安装python。
  • 我使用Hudson,它有一个插件从svn中获取。它通常能够智能地执行,特别是只有在某个文件在svn更新中发生更改时才会生成。哈德森很容易上手。 Hudson是基于Java的,在Java社区非常流行。这意味着它是非常跨平台的,但是您需要在构建机器上安装JRE。
  • 大概可以在哈德逊内部调用一些rpm工具。
1

看看DDJ的这篇文章,其中提出并实现了一个更强大的构建系统概念(比make)。不确定它会适合您的要求,但它是我见过的最接近的。几个月前我正在寻找同样的东西,然后我发现了这篇文章。

http://www.drdobbs.com/architect/218400678

2

你应该考虑使用哈德森,Maven的之间的混合(用于构建管理),常春藤(依赖关系管理)和Archiva(用于文物档案)。

此外,如果您正在研究cross.compilation,请查看Make Project Creator(MPC)和Bakefile。

玩得开心!