14

これが私がやりたいことです:

  • 入力make allすると、ライブラリとそのドキュメントが作成されます。
  • 入力make testすると、lib(必要な場合)、gtest、そしてテストがビルドされます
  • 入力make checkmake test必要に応じて実行され、実行可能ファイルが実行されます

今のところ、私は最初に動作するようにできただけです。私が抱えている問題は、gtestの条件付きインクルードです。

GtestはCMakeを使用しています。理論的には、gtestディレクトリを含めるだけですadd_subdirectoryが、gtestは常にビルドされます。

現在の私の構造は次のとおりです。

CMakeLists.txt(ここでドキュメントとライブラリのターゲットを追加します)
doc(my doxygen docs)
インクルード(私のヘッダー)
lib(コンパイルされたライブラリの移動先)
src(私の.cppファイルが入る場所)
テスト
    CMakeLists.txt(ここでgestとテストのターゲットを追加します)
    bin(テスト実行可能ファイルが移動する場所)
    contrib(gtestがある場合)
    src(私のテスト)

-targetへの依存関係としてgtestを追加する方法を理解しようとしていますが、test毎回gtestをビルドするわけではありません。

私は本当にイライラしていて、CMakeの学習に関する情報はほとんどないので、誰かが詳細なチュートリアル(インターネットで無料で入手可能)を知っていれば、それは素晴らしいことです。

4

1 に答える 1

9

秘訣はadd_subdirectory(test EXCLUDE_FROM_ALL)それを行うことであり、その場合、そのCMakeList.txt内のどのターゲットもALLターゲットに追加されません。

于 2011-04-11T19:23:29.253 に答える