5

makefile と CMakeLists の主な違いを検索しましたが、CMake は依存関係の解決を自動化するのに対し、Make は手動であるなどの小さな違いが見つかりました。

私は大きな違いを探しています.CMakeに移行することの長所と短所は何ですか?

4

1 に答える 1

12

CMake とAutotoolsを比較できます。それはもっと理にかなっています!これを行うと、Autotools を作成する理由となった make の欠点と、make に対する CMake の明らかな利点を見つけることができます。

Autoconf は重要な問題 (システム固有のビルドおよびランタイム情報の信頼性の高い検出) を解決しますが、これは移植可能なソフトウェアの開発におけるパズルの 1 ピースにすぎません。この目的のために、GNU プロジェクトは、Autoconf が開始した作業を完了するための一連の統合ユーティリティを開発しました。最も重要なコンポーネントが Autoconf、Automake、および Libtool である GNU ビルド システムです。

Makeはそれを行うことができません。とにかくすぐに使えるわけではありません。それを実行させることはできますが、プラットフォーム間で維持するには多くの時間がかかります。

CMake は同じ問題 (およびそれ以上) を解決しますが、GNU Build System よりもいくつかの利点があります。

  1. CMakeLists.txt ファイルの記述に使用される言語は読みやすく、理解しやすいものです。
  2. プロジェクトをビルドするために make だけに依存するわけではありません。Visual Studio、Xcode、Eclipse などの複数のジェネレーターをサポートしています。

CMake と make を比較すると、CMake を使用する利点がさらにいくつかあります。

  1. システム ライブラリのクロス プラットフォーム検出。
  2. ツールチェーンの自動検出と構成。
  3. プラットフォームにとらわれない方法でファイルを共有ライブラリにコンパイルする方が簡単で、一般的に make よりも使いやすいです。

全体として、make と比較すると明らかに CMake が選択されますが、いくつかの点に注意する必要があります。

  • CMake は単なる make ではなく、より複雑になる可能性があります。長い目で見れば、それを使用する方法を学ぶことは有益ですが、1 つのプラットフォームのみで小さなプロジェクトを実行している場合は、make の方がうまく機能する可能性があります。
  • CMake のドキュメントは、最初は簡潔に見えるかもしれません。そこにはチュートリアルがありますが、カバーする側面がたくさんあり、すべてをカバーするのに本当に良い仕事をしていません. そのため、ほとんどの場合、紹介的なものしか見つかりません。ドキュメントと実際の例から残りを理解する必要があります。CMake を使用するオープン ソース プロジェクトはたくさんあるので、それらを調べることができます。
于 2012-09-06T08:02:59.593 に答える