非常に大規模な C++ プロジェクトを構築するために、GNU Autotools や Make に代わる素敵できちんとしたツールがあるかどうか疑問に思っています。これらは使用するのが非常に複雑です。
プロジェクトが小さい場合、de Autotools が必要とするすべてのファイルを生成するのは簡単ですが、ソース コードが多くのディレクトリに分割され、複数のサード パーティ ライブラリと多くの依存関係がある場合、「Autotools 地獄」に陥ります。
推奨事項をありがとう
非常に大規模な C++ プロジェクトを構築するために、GNU Autotools や Make に代わる素敵できちんとしたツールがあるかどうか疑問に思っています。これらは使用するのが非常に複雑です。
プロジェクトが小さい場合、de Autotools が必要とするすべてのファイルを生成するのは簡単ですが、ソース コードが多くのディレクトリに分割され、複数のサード パーティ ライブラリと多くの依存関係がある場合、「Autotools 地獄」に陥ります。
推奨事項をありがとう
CMake?(makefileを生成するため、技術的にはそれ自体を置き換えるものではありません)。
最近、いくつかの場所で「 SCons」がポップアップするのを見ました。でも、自分で何も作成していません。
Google V8JavaScriptエンジンはC++で記述されており、SConsを使用しているので、それは1票だと思います。
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 ページのドキュメントで、すぐに使い始めることができます。
さまざまな C++ ビルド ツールの速度を比較するには、次のベンチマークをご覧ください: https://psycledelics.github.io/wonderbuild/benchmarks/time.xml
私たちは、複雑な C++ プロジェクトに Jam を使用しています。利点の 1 つは、Jam が適切にクロス プラットフォームであることです。私がメリットを口に出すのではなく、次のリンクをざっと見てください: http://www.perforce.com/jam/jam.html
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 が勝者です。
Cookは、makeの代わりに使用できるもう1つのツールです。私はそれを使用しているいくつかの大企業を見てきました。そのため、Webサイトはかなり古くなっているように見えますが、エンタープライズ対応です。
私はビルド プロセスに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.ac
configure が任意のシステムで特定のライブラリを検出できるように、スクリプトを調整する必要がありました。しかし、それはそれほど悪くはありませんでした。この方法で autoconf スクリプトを取得するのは素晴らしいことです。なぜなら、私はそれらをすべて自分で書く必要がないからです。プロジェクトを配布すると、あたかも私が書いたかのように見え、ユーザーは神で私のプロジェクトをビルドすることができます-与えられた方法で
./configure && make && make install