1

私はcmakeで脳をクラッシュさせています。私はそのすべての力を適切に理解していませんが、それを学ぶ価値があることについて読んでいるところはどこでも..ここにいます.

私が通常使用しているいくつかの優れたライブラリ (Qt、OpenGL、OpenCV など) を使用するビルド環境をセットアップしたいと思います。また、アプリケーションまたはモジュールの両方を簡単に作成できます (今のところ、それらをモジュールと呼びましょう)。アプリケーションで使用します。

私が念頭に置いているフォルダー構造は次のようなものです。

/apps/app_with_foo_and_qt_gui
/apps/app_with_foo
/apps/app_with_foo_and_foo1
/modules/foo
/modules/foo1

foo または foo1 にインクルードするためのコマンドを使用するためにアプリで必要なことがfind_packageわかりましたが、私の主なポイントは、このコマンドが検索ファイルと構成ファイルの両方を探しているようであり、その違いを理解していないことです。彼ら。

built次に、モジュールのコンパイル済み部分を配置するフォルダー (それを使用するアプリをコンパイルするたびにコンパイルしないため) と、テストを配置するテスト フォルダーを各モジュールに配置するというのが私の考えです。しかし、テストをコンパイルする方法はあまり明確ではありません。

明確化?

4

1 に答える 1

2

Find*.cmake とConfig.cmake に関して、これら 2 つのファイルは、パッケージに関する情報を検索して提供するという同じタスクを実行します。ただし、相互作用の方法は異なります。Find .cmake ファイルを使用すると、CMake はそれらを使用してさまざまな詳細を検索します。たとえば、CMake の FindQt4.cmake ファイルはシステムで qmake を検索し、それを使用してさまざまな変数を設定し、CMake で Qt4 を使用します。一方、*Config.cmake ファイルには、パッケージのさまざまな部分がシステム上のどこに存在するかに関する定義済みのデータが含まれています。たとえば、Qt4Config.cmake ファイルが存在する場合、qmake にパスを照会するのではなく、事前に計算された Qt4 のパスが含まれます。詳細については、find_package に関する CMake のドキュメントを参照してください。

したがって、プロジェクト構造についての私の推奨事項は、foo と foo1 をシステム ライブラリとしてインストールし、Config.cmake ファイルを使用してそれらに関するさまざまな詳細を見つけることです。foo ライブラリをシステムにインストールする必要はありません。代わりに、それらをローカル ディレクトリ (ビルド フォルダ、または /modules/install などの一般的な場所) にインストールすることができます。

次に、各アプリは、CMake のfind_packageを使用して適切な部分をクエリできます。

*Config.cmake ファイルを作成するために、CMakeにはいくつかのドキュメントがここにあります。

于 2013-10-07T21:18:46.597 に答える