38

Box2D プロジェクトのソースを入手したので、そのテストベッド部分をコンパイルしたいと考えています。プロジェクト フォルダーには、次のようなフォルダーが含まれています。 freeglu glui testbed(デモ) helloword(デモ) Box2D Build CMakeFiles

すべての異なるフォルダーに多数の CMakeLists.txt があります。必要なすべての場所にmakeファイルが作成されるように、これらすべてのファイルをcmakeする必要があると考えていました。私はこれを読みました(私がしたいことをするための指示として):

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 はありません。

4

3 に答える 3

68

cmakeは Makefile ジェネレーターです。

を呼び出すときは、次の手順に従って、現在のディレクトリにMakefilecmake [path]を生成するように要求します。[path]/CMakeLists.txt

通常、cmake は動作中にいくつかのメッセージを出力します。エラーがなければ、「make」と入力して、新しく作成した Makefile を実行できます。

CMakeLists.txtファイルは、サブディレクトリ内の他のCMakeLists.txtファイルを参照できるため、通常はトップディレクトリのCMakeLists.txtのみに関心があり、他のディレクトリには関心がありません。

空の「ビルド」ディレクトリを使用することは、「アウト オブ ソース ビルド」と呼ばれる手法であり、生成されたすべてのファイル (.o、実行可能ファイル、Makefile、.anything) が別の「ビルド」ディレクトリに生成され、ソースファイル。すべてをクリーンアップする場合は、ビルド ディレクトリのすべてのコンテンツを削除できます。

実際、cmake に最上部の CMakeLists.txt の正しいパスを指定する限り、「ビルド」ディレクトリを任意の場所に配置できます。複数のビルド ディレクトリを持つこともできます。同時に複数の異なるビルドが必要な場合 (異なるオプション、異なるバージョンの gcc など) に非常に便利です。

古いプログラムでは、Makefile も生成しますが、./configure(これは auto-tools と呼ばれます。既に遭遇しているかもしれません) を使用します。cmake は auto-tools の後継と見なされます。

于 2012-09-02T15:54:31.327 に答える
9

cmake ..../CMakeLists.txtfile を開始点として使用して、現在のディレクトリに makefile を生成します。この後に実行されるmakeコマンドは、生成された makefile を入力として使用してプログラムをビルドします。これは、ソース コードとビルド結果を別のフォルダーに保管するのに便利です。一般的な構文は次のとおりです: cmake source-dir (もちろん、他にもたくさんのスイッチがあります)。

于 2012-09-02T14:15:41.130 に答える
6

まあ、..親フォルダの省略形なので、おそらく で見つかったものに基づいて動作しますBox2D_v2.2.1

于 2012-09-02T14:14:52.537 に答える