14

私は同様のトピックを見つけました:Autotools、Cmake、Sconsの違いは何ですか?、しかし私の質問は少し他のものであり、答えも他のものである可能性があると思います。

wafが不安定である(APIの変更)、まだ本番の準備ができていないなどの記事をたくさん見つけました(ただし、これらの記事はすべて2〜3年前のものです)。

次の場合は、これらのビルドツールのどれを使用する必要がありますか。

  • 大きなC++(11)プロジェクトを作成する-複雑なコンパイラーとしましょう
  • LLVMで使用
  • 柔軟性があり、使いやすいことを確認してください
  • 十分に速くなることを確認してください
  • すべての標準プラットフォームでコンパイルします(基本プラットフォームはLinuxですが、WindowsとMacOSXでもコンパイルしたいです)

たくさんの記事を読んで、Cmakeを見つけて、利用可能な「最高の」ツールをwafしましたが、期限がなく、あまり偏っていない比較(sconsの作者の比較など)を見つけるのは非常に困難です。それほど古くはありません。本当に

4

2 に答える 2

16

waf は、ほぼすべての要件をカバーしています...

  • API の変更: ソース tarball に waf が含まれているため問題ありません (<100Ko)

  • 大きなプロジェクト: 構成をサブディレクトリに分割できます (コンテキストを継承できます)。私は、doxygen/sphinx のドキュメントを含む C/C++/fortran77/fortran90/python/Cython の 10k 以上のファイルを含むプロジェクトに取り組んできました。

  • 柔軟性と容易さ: Python でモジュールを追加できます ( http://code.google.com/p/waf/wiki/AddingNewToolsToWaf )

  • 高速: タスクは並行して実行できます: http://www.retropaganda.info/~bohan/work/psycle/branches/bohan/wonderbuild/benchmarks/time.xml

  • マルチプラットフォーム: Python が利用可能な場所ならどこでも Waf を実行できます。これには、Windows と MacO が含まれます。Waf は、mscvc、gcc、icc、およびその他のコンパイラと互換性があります。ビジュアル/Eclipse プロジェクトを作成できます。

... しかし、waf は llvm に問題があるようです: http://code.google.com/p/waf/issues/detail?id=1252

編集: Wojciech Danilo が言ったように、LLVM の問題は修正されました

于 2013-03-12T16:30:49.077 に答える
4

私は現在、C++11 と LLVM を介して独自の言語実装に CMake を使用しています。

構文が使いやすいので CMake が好きです。LLVM は、簡単な「load_package」コマンドでロードできます。その後、必要なすべてのヘッダーとライブラリを使用できます。CMake では、子スクリプトが親スクリプトから変数を継承できます。したがって、すべてのサブディレクトリに変数を設定してパッケージをロードする必要はありません。

C++11 のサポートは、使用するコンパイラによって異なります。全体として、CMake は「実際の」ビルド スクリプトを作成するための単なるレイアウトです。

make を使用している場合、make の --jobs=N を使用して、マルチコア プラットフォームでのコンパイルを高速化できます。Windows では、Visual Studio 2012 プロジェクト ファイルを生成し、Microsoft のビルド システムを使用して、そのビルド ジョブを使用してコンパイル プロセスを高速化できます。常にビルド ファイル (myproject/build など) 用のサブフォルダーを作成する必要があります。このようにして、ソース ツリーをきれいに保ちます (cd build; cmake ..; cd ..)。

他のすべてのツールについて話すことはできません。

于 2013-01-09T03:28:19.480 に答える