Box2Dプロジェクトソースを取得し、テストベッド部分をコンパイルしたいと考えています。プロジェクトフォルダーには次のようなフォルダーが含まれています:freeglu glui testbed(デモ)helloword(デモ)Box2DビルドCMakeFiles
すべての異なるフォルダーに多くのCMakeLists.txtがあります。必要なすべての場所にmakeファイルが作成されるように、これらすべてのファイルを作成する必要があると考えていました。私はこれを読んでいます(指示するために私はしたいのですが):
wget http://box2d.googlecode.com/files/Box2D_v2.2.1.Zip
unzip Box2D_v2.2.1.Zip
cd Box2D_v2.2.1/Build
cmake ..
make
Cmake ..は何をしますか?ビルドフォルダーにCMakeLists.txtはありません。
cmakeはMakefileジェネレーターです。
_cmake [path]
_を呼び出すときは、_[path]/CMakeLists.txt
_の指示に従って現在のディレクトリにMakefileを生成するを要求します。
通常、cmakeは動作中にいくつかのメッセージを出力します。エラーなしで完了したら、「make」と入力して、新しく作成したMakefileを実行できます。
CMakeLists.txtファイルは他のディレクトリを参照できますCMakeLists.txtサブディレクトリ内のファイルなので、通常はCMakeLists.txttopディレクトリで、他のディレクトリではありません。
空の「ビルド」ディレクトリを使用することは、「アウトオブソースビルド」と呼ばれる手法であり、生成されたすべてのファイル(.o、実行可能ファイル、Makefile、.anything)が別の「ビルド」ディレクトリに生成され、ソースファイル。すべてをクリーンアップする場合は、ビルドディレクトリのすべてのコンテンツを削除できます。
実際、cmakeに最上位のCMakeLists.txtの正しいパスを与える限り、「ビルド」ディレクトリを任意の場所に置くことができます。複数のビルドディレクトリを持つこともできます。同時に複数の異なるビルドが必要な場合(オプションが異なる、gccのバージョンが異なるなど)は、非常に便利です。
古いプログラムでは、Makefileも生成しますが、_./configure
_を使用します(これはauto-toolsと呼ばれます。すでにそれに遭遇した可能性があります)。 cmakeは自動ツールの後継と見なされています。
cmake ..
は、../CMakeLists.txt
ファイルを開始点として使用して、現在のディレクトリにメイクファイルを生成します。 makeコマンドは、この後に実行され、生成されたmakefileを入力として使用してプログラムをビルドします。これは、ソースコードを保持し、異なるフォルダーに結果をビルドするのに便利です。一般的な構文は次のとおりです。cmake source-dir(もちろん、他にも多くのスイッチがあります)。
まあ、..
は親フォルダの省略形なので、おそらくBox2D_v2.2.1
で見つかったものすべてに作用します。