私はcmakeで頭がおかしくなりました。この回答の後、ディレクトリ内に多くのファイルがあり、ここにすべてをコピーするのは退屈な可能性があるため、簡単な例を作成してgithubに配置しようとしました。
私がやりたいことは、qt/opencv/opengl の実験を処理するための単純なフレームワークを構築することです。私が欲しいのは、これらのディレクトリを含むリポジトリです。
root*
|-apps
|---test1*
|
|-build
|-cmake*
|
|-modules
|---foo*
(* 署名されたディレクトリは、CmakeLists.txt や FindXXModule.cmake などのいくつかの cmake ファイルを含むディレクトリです)
モジュールでは、モジュールを記述できます (たとえば、顔認識用のモジュール、opengl で赤い立方体を描画するためのモジュール、個人用の qt ウィジェット拡張を含むモジュール)。
アプリケーションを作成し、いくつかのモジュールをリンクする簡単な方法が必要です。そのために、FindXXModule.cmake を配置する cmake ディレクトリを作成し、アプリで次のように言うことを考えましたfind_package(XXModule)
。
今のところ、このリポジトリをインストールすることは気にせず、ツリー構造はこれでなければならないことに注意してください(したがって、apps/test2 にいる場合は、cmake ディレクトリを as../../cmake
またはモジュールディレクトリを参照できることがわかっています../../modules
)
test1
モジュールを使用するという名前のアプリで小さな例を書き、それをgithub リポジトリfoo
に入れました。
今のところtest1
、cmake 呼び出しcmake path_to_test1_CmakeLists.txt
でアプリケーションをコンパイルでき、満足しています。しかし、起動しようとしても、ファイルが 2 回読み取らcmake path_to_root_CmakeLists.txt
れるため機能しません(2 回読み取らないためにいくつかを使用できませんでした)。Findfoo.cmake
if
次に、test1 cmake を実行すると、cmake キャッシュなどを含む foo ディレクトリが作成されroot/cmake
ますが、必要ありません。cmakeが生成しなければならないすべてのファイルがroot/build
ディレクトリにあることを望みます。
だから、それらは私の2つの質問です:
- すべてのアプリをビルドできる CmakeLists.txt を作成する方法と、modules ディレクトリに書き込む今後のすべてのテスト
- 単一のアプリの cmake を起動すると、cmake ディレクトリにファイルが作成されることを回避するにはどうすればよいですか。
私の英語とcmakeの仕組みについての私の考えが良くない場合は申し訳ありません..明確であることを願っています.
編集:
もう一つ。Findfoo.cmake には悪いハックがあります: test1 から cmake を呼び出すときに、modules/foo 内に実際の CMakeLists.txt を追加するには、ツリーにないサブディレクトリを追加する必要があります..おそらく、この種のハックは全体の構造を見直して削除..