2008-09-10 15 views
22

GNU AutotoolsやMakeを置き換えて、非常に大規模なC++プロジェクトを構築するためのすてきできれいなツールがあるのだろうか。makeに取って代わることのできるC++プロジェクト用の優れたビルディングツールはありますか?

プロジェクトが小さい場合にAutotoolsが必要とするすべてのファイルを生成するのは簡単ですが、ソースコードが複数のサードパーティライブラリと多数の依存関係を持つ多数のディレクトリに分割されている場合、 "Autotools Hell"すべての推奨事項については...

おかげ

答えて

18

Google V8 JavaScript EngineはC++で書かれており、SConsを使用していますので、私はそれはそれのために一票だと思うています。

+2

SConsは大規模なVisual Studioソリューションでは非常に遅いことがわかりました。 UNIX-ishシステムではうまく動作します。 –

+0

@クリストファー:あなたは精巧にできますか?私はこれが私の経験の場合であるとは思わなかった。 devstudioファイルからsconsファイルを生成する場所は? – grieve

+2

私はこれをもう一度:大規模なビルドになると、SConsは非常に遅いです。 – jkp

18

CMake? (メイクファイルを生成するので、技術的にはそのように置き換えられません)。

最近、「SCons」のポップアップがいくつか見られました。しかし、自分自身で何も作成していない。

+0

でそれはメイクに代わるものではありませんが、CMakeのは、私は私の小さな個人的なプロジェクトのためにすべての時間クックを使用し、非常によく – jturcotte

2

Cookは、makeを置き換えるために使用できる別のツールです。私はそれを使用していくつかの大企業を見てきました。ウェブサイトはむしろ日付が古いように見えますが、エンタープライズ向けです。

http://miller.emu.id.au/pmiller/software/cook/

+0

をAutotool群を交換しません。私が気に入っているのは、a.c、b.c、c.cのような既存のリストから、ファイル名のリストをa.o、b.o、c.oのリストにすることができるということです。 a1.c、b1.c、c1.cのような面白いこともa2.c、b2.cなどを生成します。Makeファイルはこれを行うことができないようです。主な欠点:Cookは独自の言語を持っているので、Python、Rubyなどの既存のスキルを活用することはできません。 – DarenW

6

私たちは複雑なC++プロジェクトにJamを使用します.1つの利点は、それがうまくクロスプラットフォームであることです。 http://www.perforce.com/jam/jam.html

+0

6〜7年前にmakefileからjamを移動しました。物事を進めるにはちょっと時間がかかりましたが、最初の作業が完了してからはそれ以来シームレスになっています。新しいプロジェクトの設定はほとんどありません。 –

+0

^移動したジャム^ジャムに移動 –

15

wafを見てみましょう:私はちょうどこのリンクで簡単に見てきたが、利益をオフに噴出するのではなく。

私はmakeとautotoolsを完全に置き換えるものと考えることができると思います。それはPythonに基づいています。私がwafについて気に入っていることの1つは、wafスクリプト自体が〜100kbのスタンドアロンで、プロジェクトのルートディレクトリに置かれていることです。これは、ビルドシステムを最初にインストールする必要があるmakeやrake、およびfriendsとは対照的です。あなたはPython> = 2.3をインストールしなければなりません。

~$ ./waf configure && ./waf && ./waf install 

ワットは、Makefileと同じですが、wscriptファイルです。これはPythonスクリプトwafが読み取り、それは少なくとも3つの関数:set_options(),configure(conf)build(bld)を定義します。あなたはそれぞれが何をしているかを推測することができます。

jumpstartするには、ソースディストリビューションのdemos/cpp/*ファイルを調べることをおすすめします。また、doc/waf.pdfファイルもご覧ください。それはすぐにあなたを稼働させる12ページの文書です。

+0

Sconsは "インストールしない"バージョンも提供しています... 5.5KBの体重... – paxos1977

+2

5.5KB? 2.1 * MB *を試してみてください! – richq

+2

SConsも犬が遅いです。私は1年以上それを使っていて、Waf ASAPに移行したいと思っています。 – jkp

5

Noel Llopisはビルドシステムと比較していくつかの記事を書いています。 「パーフェクトビルドシステムのためのクエスト」のパート1はhttp://gamesfromwithin.com/the-quest-for-the-perfect-build-systemです。第2部は同じサイトで続きます。 Sconsの再試行はhttp://gamesfromwithin.com/?p=104に報告されています。

結論:SConsが遅すぎる... Jamが勝者です。様々なCの速度の比較のために

+1

その記事は2005年のものなので、かなり古いです。 – JesperE

+0

真。しかし、SConsの新しいテストがありますが、これは昨年末からのものです。ちょうど壊れたリンクを更新した。 –

+0

最初のリンクが死んでいるようです。 – shuttle87

11

あなたがこのベンチマークを見てすることができ、ツールを構築++: ​​

2

私は(LinuxとWindowsの両方で)ビッグC++プロジェクトにSConsはを使用して、そしてそれてきました本当にうまくいく。

scons all -j8(これはオブジェクトファイルを並列にコンパイルする)は非常にクールです!

1

私はbakefileをビルドプロセスに使用しており、私は大きなファンになりました!

恐ろしいGNU autotoolsスクリプトは言うまでもなく、自分自身でMakefileを書く必要はもうありません。私がしなければならないのは、ビルドターゲットを記述するファイルXMLを用意することだけです。普段のautoconfオプションを使用

available formats are: 
    autoconf  GNU autoconf Makefile.in files 
    borland  Borland C/C++ makefiles 
    dmars   Digital Mars makefiles 
    dmars_smake Digital Mars makefiles for SMAKE 
    gnu   GNU toolchain makefiles (Unix) 
    mingw   MinGW makefiles (mingw32-make) 
    msevc4prj  MS eMbedded Visual C++ 4 project files 
    msvc   MS Visual C++ nmake makefiles 
    msvc6prj  MS Visual C++ 6.0 project files 
    msvs2003prj MS Visual Studio 2003 project files 
    msvs2005prj MS Visual Studio 2005 project files 
    symbian  Symbian development files 
    watcom  OpenWatcom makefiles 
    xcode2  Xcode 2.4 project files 

:Bakefileは異なるメイクファイルフォーマットは(ドキュメントのリストを貼り付ける)選択することができる場合、権利などの依存関係のすべて(ヘッダーファイル)を取得したMakefileにこれを変換することができそれは厄介なGNU autotoolsスクリプトを私のために書いています。私はconfigure.acスクリプトを適合させなければならなかったので、configureはどのシステムでも特定のライブラリを見つけます。しかし、あまりにも悪くはありませんでした。この方法でautoconfスクリプトを入手するのはいいです。なぜなら、自分ですべてを書く必要がないからです。私がプロジェクトを配布するときには、私が書いたかのように見えます。ユーザーは、道与えられ、

./configure && make && make install 
+0

このプロジェクトのようなものは、もはや積極的に管理されていないようですね? – sivabudh

関連する問題