なぜcmakeが必要なのか?質問する

なぜcmakeが必要なのか?質問する

ライブラリをビルドするのに cmake が必要なのはなぜかわかりません。質問が馬鹿げていて申し訳ないのですが、Windows でいくつかのライブラリを使用する必要があり、どのライブラリを選択しても、cmake でビルドおよび/またはコンパイルする必要があります。これは何のためですか? プロジェクトに必要なものだけを #include "path" して、プロジェクトと同時にコンパイル/ビルドできないのはなぜですか?

また、cmake がライブラリをビルドできるように、Ruby、Perl、Python の特定のバージョンをすべてインストールする必要がある場合があります... これらのプログラムが必要なのはなぜですか。また、ライブラリをビルドする場合にのみ必要ですか、それともプロジェクトの後半でも必要ですか? (具体的には、ライブラリをビルドした後でこれらのプログラムをアンインストールできますか?)

ベストアンサー1

現時点では、異なるプラットフォーム上で C++ で何かを構築するのは面倒です。

世の中にはさまざまなビルド システムが存在しますが、これを行う標準的な方法はありません。Visual Studio ソリューションを提供するだけでは、Linux または Mac でのコンパイルには役立ちません。

Linux または Mac 用の makefile を追加する場合は、ソリューションと makefile の間で構成を繰り返す必要があります。その結果、メンテナンスのオーバーヘッドが大きくなる可能性があります。また、makefile は、新しいものと比較すると、実際には優れたビルド ツールではありません。

CMake ライブラリしかないというのは、ほとんど偶然です。ただし、CMake は現在人気のある選択肢です。

ビルドを統合するためのソリューションはいくつかあります。CMake は特別なビルド ツールです。makefile を作成してビルドできますが、必要に応じて cmake に Visual Studio ソリューションを作成するように指示することもできます。

外部プログラムについても同様です。外部プログラムは使用するライブラリのメンテナーの選択であり、コード生成などの標準はありません。

CMake は「唯一の」ソリューションではないかもしれませんが (ただし、近日リリース予定の Visual Studio 2015 では CMake サポートが統合されます)、クロスプラットフォームのビルド システムの傾向はますますこの方向に向かっています。


ヘッダーだけを含めることができないのはなぜかという質問に対して:

ヘッダーのみのライブラリはほとんどなく、コンパイルが必要です。プリコンパイルされたライブラリ/dll を入手して、ヘッダーをインクルードし、リンカー パスを追加するだけです。Linux では、パッケージ マネージャーを使用して-devプリビルド ライブラリとそのヘッダーをインストールするだけのパッケージが用意されているため、これは簡単です。Windows にはネイティブにそのようなものはありません。

または、ライブラリが使用するビルドツールを使用して自分でビルドする必要があります。

おすすめ記事