7

私たちの会社で必要なのは、Linux /C++用の一種のリリース管理ツールです。当社の製品は、複数のライブラリと構成ファイルで構成されています。ここでは、そのようなシステムに必要な基本機能をリストします。

  • 依存関係を追跡し、依存関係がメジャーバージョンを増やしたライブラリのメジャーバージョンを簡単に増やす機能。更新の影響を受ける人を知ることができるように、内部で何らかの依存関係グラフを作成する必要があります。

  • それが扱う製品を構築する方法を知っています。特定のビルドファイルまたはそれ以上の機能-makefileを読み取って理解する機能。

  • SVNと連携して、そこからの新しいリリースをチェックし、ビルドを実行できるようにします。

  • いくつかのインストーラーを生成します-rpmまたはtar.gz形式で。そのためには、rpm仕様のファイル形式を理解できる必要があります。

現在、私たちはすでにかなり使用可能なそのようなツールに取り組んでいます。しかし、私たちの仕事はユニークではなく、その仕事をするツールがそこにあるはずだと私は信じています。

4

5 に答える 5

2

Hudson、Maven(ビルド管理用)、Ivy(依存関係管理用)、Archiva(アーティファクトアーカイブ用)を組み合わせて使用​​することを検討する必要があります。

また、cross.compilationを検討している場合は、Make Project Creator(MPC)とBakefileをご覧ください。

楽しむ!!

于 2010-02-21T16:21:55.470 に答える
1

DDJのこの記事をご覧ください。ここでは、(makeよりも)より堅牢なビルドシステムの概念が提示され、実装されています。それがあなたの要件にうまく適合するかどうかはわかりませんが、私が今まで見た中で最も近いものです。数ヶ月前に同じものを探していたところ、その記事を見つけました。

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

于 2010-02-21T00:43:15.840 に答える
1

私が現在取り組んでいるプロジェクトでは、cmakeやその他のKitwareツールを使用して、ネイティブコード(C ++)のこの問題のほとんどを処理しています。ポイントごとの回答:

  • cmakeスクリプトは、さまざまなプロジェクトの依存関係を処理します。依存関係のグラフがありますが、それが自家製のスクリプトなのか、cmakeが提供する機能なのかわかりません。

  • さて、cmakeはプラットフォームに関するmakefileを生成します。開発の際に依頼された場合は、Eclipsecdtとvisualstudioのプロジェクトを生成します。

  • Cmakeには、デイリービルドを実行してテストの実行状況を確認するために使用するctestとcdashのツールがいくつかあります。

  • インストーラーを作成するために、cmakeにはcpackがあります。1つのスクリプトから、Linuxでtar.gz、deb、またはrpmファイルを生成するか、Windowsでインストーラーを生成するために自動生成されたNSISスクリプトを生成できます。

Javaコードの場合、ここですでに説明したmavenとhudsonを使用します。

于 2010-02-21T22:56:32.563 に答える
0

Mavenにはネイティブコードプラグインがあります。必要なことをすべて実行できるとは思いませんが、依存関係のバージョン番号を追跡するのは得意であり、アーティファクトを構築し、VCSで機能します。

于 2010-02-19T14:51:56.430 に答える
0
  • わからない
  • cmake / scons:私はcmakeを使用しましたが、それが好きではありませんが、sconsについて本当に良いことを聞いたことがあります。ただし、sconsはPythonベースであるため、build/devマシンにpythonをインストールする必要があります。
  • svnからフェッチするプラグインがあるHudsonを使用します。これは一般的にインテリジェントに実行され、特にsvnアップデートで一部のファイルが変更された場合にのみビルドされます。ハドソンは簡単に始めることができます。HudsonはJavaベースであり、Javaコミュニティで非常に人気があります。これは、かなりクロスプラットフォームであることを意味しますが、ビルドマシンにJREをインストールする必要があります。
  • おそらくハドソン内でいくつかのrpmツールを呼び出すことができます。
于 2010-02-20T18:54:01.980 に答える