2012-09-02 4 views
19

私はBox2Dプロジェクトのソースを取得しており、そのテストベッドの部分をコンパイルします。 freeglu GLUIテストベッド(デモ)helloword(デモ) BOX2Dすべて別のフォルダには多くのCMakeLists.txtがありCMakeFilescmakeは何をしますか?

をビルドします。 プロジェクトフォルダのようなフォルダが含まれています。 私はすべてのファイルをcmakeして、必要なすべての場所に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はありません。

+0

しかし、 "Box2D_v2.2.1"フォルダにCMakeLists.txtファイルがあるはずです。 "cmake .."では、CMakeLists.txtファイルがディレクトリ階層 "Box2D_v2.2.1/Build /"の1つ上のディレクトリに存在することを二重の点線で示しています。 –

答えて

35

cmakeはMakefileジェネレータです。あなたがcmake [path]を呼び出すと

は、あなたはそれが働いている間にいくつかのメッセージ[path]/CMakeLists.txt

通常cmakeの出力に与えられたカレントディレクトリ次の手順でのMakefileを生成にそれを聞いて、それはエラーなしで実行された後、新しく作成されたMakefileを実行するには、 "make"とタイプします。あなたは通常、トップディレクトリではなく、他のもののCMakeLists.txtによってのみ関心があるので、

CMakeLists.txtファイルは、サブディレクトリ内の他のCMakeLists.txtファイルを参照することができます。

空の "build"ディレクトリを使用すると、生成されたすべてのファイル(.o、実行可能ファイル、Makefile、.anything)が別の "build"ディレクトリに生成される "out-of-source build"ソースファイルと混在することはありません。すべてをクリーンにしたい場合は、ビルドディレクトリのすべての内容を削除することができます。

実際には、CMakeに一番上のCMakeLists.txtの正しいパスを与える限り、あなたの "build"ディレクトリをどこにでも置くことができます。いくつかのビルドディレクトリを持つこともできます。これは、同時に複数の異なるビルドが必要な場合に便利です(異なるオプション、異なるバージョンのgccなど)

古いプログラムでは、Makefileも生成しますが、./configureを使用しますあなたは既にそれに遭遇しているかもしれません)。 cmakeは、自動ツールの後継とみなされています。

+0

ああ!どうもありがとう!それは私の混乱を解消した。 CMakeLists.txtを含むファイルでcmakeを実行しようとしましたが、cmakeをファイル指定なしで入力して、cmakeのmanページが表示されていると考えました。おそらく私はそれを正しく試していなかったかもしれません:) – batman

+0

これをもう少し拡張することができれば、実際のコマンドは私が考えていたものとは異なります。つまり、cmake ..DBの代わりに 'cmake -DBOX2D_INSTALL = ON -DBOX2D_BUILD_SHARED = ON'がありました。それはどういう意味ですか? – batman

+1

@learnerはい。 cmakeの呼び出しにオプションを追加することで、Makefileの生成方法や、いくつかの機能の起動や別のモードの使用に関するヒントを得ることができます。ほとんどの場合、「ccmake」と入力することでオプションを変更することもできます。あなたのビルド・ディレクトリーで(点を気にして)その後、Makefile生成オプションを表示する小さなインタフェースが表示されます。 – Offirmo

3

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

+0

@Alex Farber and Rook、 親フォルダでcmakeを試しても何も起こりませんでした。それはいくつかの種類のcmakeのガイドを与えました。そして1ステップ深く入り、上のディレクトリをcmakeする必要がありますか? – batman

+0

CMakeを使う推奨方法は、最初にcmake ..をビルドフォルダに入れたものではありません。私はそれを打ち負かそうとはしません。 – drescherjm

+1

http://www.cmake.org/Wiki/CMake_FAQ#Out-of-source_build_trees – drescherjm

6

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

関連する問題