22

非常に大規模な C++ プロジェクトを構築するために、GNU Autotools や Make に代わる素敵できちんとしたツールがあるかどうか疑問に思っています。これらは使用するのが非常に複雑です。

プロジェクトが小さい場合、de Autotools が必要とするすべてのファイルを生成するのは簡単ですが、ソース コードが多くのディレクトリに分割され、複数のサード パーティ ライブラリと多くの依存関係がある場合、「Autotools 地獄」に陥ります。

推奨事項をありがとう

4

9 に答える 9

18

CMake?(makefileを生成するため、技術的にはそれ自体を置き換えるものではありません)。

最近、いくつかの場所で「 SCons」がポップアップするのを見ました。でも、自分で何も作成していません。

于 2008-09-10T17:00:36.950 に答える
18

Google V8JavaScriptエンジンはC++で記述されており、SConsを使用しているので、それは1票だと思います。

于 2008-09-10T17:14:33.640 に答える
15

wafを見てください。

make や autotools の完全な代替品と考えていただけると思います。これは python に基づいています。私が waf で気に入っていることの 1 つは、waf スクリプト自体が ~100kb のスタンドアロンであり、プロジェクトのルート ディレクトリに配置できることです。これは、ビルド システムを最初にインストールする必要がある make または rake and friends とは対照的です。ただし、python >=2.3 をインストールする必要があります。

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

Waf の Makefile に相当するのは wscript ファイルです。これは waf が読み取る python スクリプトであり、少なくとも 3 つの関数を定義します: set_options()configure(conf)およびbuild(bld). それぞれが何をしているのかは推測できます。

最初に、ソース ディストリビューションの demos/cpp/* ファイルを調べることをお勧めします。doc/ waf.pdfファイルも参照してください。これは 12 ページのドキュメントで、すぐに使い始めることができます。

于 2008-09-11T00:01:05.177 に答える
11

さまざまな C++ ビルド ツールの速度を比較するには、次のベンチマークをご覧ください: https://psycledelics.github.io/wonderbuild/benchmarks/time.xml

于 2009-01-12T00:08:42.847 に答える
5

私たちは、複雑な C++ プロジェクトに Jam を使用しています。利点の 1 つは、Jam が適切にクロス プラットフォームであることです。私がメリットを口に出すのではなく、次のリンクをざっと見てください: http://www.perforce.com/jam/jam.html

于 2008-09-10T17:20:05.750 に答える
5

Noel Llopis は、ビルド システムを比較するいくつかの記事を書いています。「The Quest for the Perfect Build System」のパート 1 はhttp://gamesfromwithin.com/the-quest-for-the-perfect-build-systemにあります。パート 2 は、同じサイトで続きます。Scons の再試行はhttp://gamesfromwithin.com/?p=104で報告されています。

結論: SCons は遅すぎる... Jam が勝者です。

于 2008-10-07T21:57:15.640 に答える
2

Cookは、makeの代わりに使用できるもう1つのツールです。私はそれを使用しているいくつかの大企業を見てきました。そのため、Webサイトはかなり古くなっているように見えますが、エンタープライズ対応です。

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

于 2008-09-10T17:02:24.827 に答える
1

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

ひどい GNU autotools スクリプトは言うまでもなく、もう自分で Makefile を書く必要はありません。私がしなければならないのはXML、ビルド ターゲットを記述したファイルを提供することだけです。Bakefile は、これをすべての (ヘッダー ファイル) 依存関係を正しく取得する Makefile に変換できます。ここでは、さまざまな Makefile 形式を選択できます (ドキュメントからリストを貼り付けます)。

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

私は通常、autoconfオプションを使用します。これは、煩わしい GNU autotools スクリプトを作成してくれます。configure.acconfigure が任意のシステムで特定のライブラリを検出できるように、スクリプトを調整する必要がありました。しかし、それはそれほど悪くはありませんでした。この方法で autoconf スクリプトを取得するのは素晴らしいことです。なぜなら、私はそれらをすべて自分で書く必要がないからです。プロジェクトを配布すると、あたかも私が書いたかのように見え、ユーザーは神で私のプロジェクトをビルドすることができます-与えられた方法で

./configure && make && make install
于 2009-02-10T03:18:12.460 に答える