ライブラリをビルドするのに 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 にはネイティブにそのようなものはありません。
または、ライブラリが使用するビルドツールを使用して自分でビルドする必要があります。