0

ですから、これがどのように機能するのか本当に理解できませんが、説明が遅くなりました。まず、念のため、ラップトップで Ubuntu 12.04 64 ビットを実行しています。

ビルドツールとして CMake を使用しています。自分のプロジェクトに OpenCV、MRPT ( http://www.mrpt.org/ )、および libfreenect をロードしたいと考えています。それらにはすべて「ソースコード」があります。私が理解できないのは、「ソースからビルド」と言うときです。それらすべてを含むプロジェクトを作成するにはどうすればよいですか? それぞれを個別に何らかの方法でビルドする必要がありますか?それから私のプロジェクトで、またはソースコードをダウンロードしてそれらをすべてまとめてビルドしますか? ご覧のとおり、私は何をしなければならないのか本当に混乱しています...各ソースコードから CMakeList.txt を実行し、他のすべての CMakeList.txt を含む 1 つの CMakeList.txt を実行しますか?

少ない世界で、ソースから 2 つ以上のライブラリをビルドしたい場合、どうすればよいですか?

一般的な回答(この「ソースからのビルド」の仕組み)と、私が言及したもの(CMake、OpenCV、MRPT、libfreenect)に関する具体的な回答をお願いします。私が本当に理解していないことを明確にしたことを願っています。

4

1 に答える 1

0

「マスター」プロジェクトに依存します。一般に、c/c++ ユニバースでは、プロジェクトは各サブプロジェクト/ライブラリのビルド プロセスを呼び出す方法を知っている必要があります。または、プロジェクトは、各外部プロジェクトを自分でビルドした後に結果をインクルードおよびリンクする方法を知っている必要があります。

必要に応じて 2 つのアプローチを混在させることもできますが、可能であれば 1 つを使用する方がクリーンだと思います。

最初のケースで、すべてのサブプロジェクトが cmake ビルド ファイル (CMakeLists.txt) を提供している場合は、それぞれ add_subdirectory() を試して、競合がないかどうかを確認してください。たとえば、Google テストはこの方法で簡単に含めることができ、後で簡単にリンクできるグローバル変数をプロジェクトに与えることができます。

または、上記のアプローチで問題が発生する場合、またはサブ プロジェクトが CMakeLists.txt を提供しない場合は、ExternalProject_add()を使用できます。より多くの作業が必要になり、プロジェクトのインクルード/リンク構成を手動で処理する必要がありますが、サブプロジェクトの独立性が高まります。たとえば、プロジェクトと競合するターゲットがある場合や、サブプロジェクトが CMakeLists.txt を提供していない場合などです。

最後のアプローチでは、プロジェクト内の構成変数を使用してサブ プロジェクトのインクルード/ライブラリ パスを指定し、サブ プロジェクトを個別にビルドしてインストールします。詳細については、 CMake:How To Find Librariesを参照してください。

于 2014-03-24T12:34:08.740 に答える