2

Qt でプロジェクトを作成し、Google Test でテストするために CMake をいじり始めました。現時点では、必要なすべてのライブラリをコンパイルしてリンクする方法を見つけることに成功しています。ただし、次のプロジェクト構造でソースをテスト ファイルにリンクする方法が見つかりませんでした。

root
|
+-- CMakeLists.txt
+-- src
| |
| +-- CMakeLists.txt
| +-- MyClass.h
| +-- MyClass.cpp
|
+-- test
| |
| +-- CMakeLists.txt
| +-- MyClassTest.cpp
|
+-- lib
  |
  +-- gtest-1.6.0
    |
    +-- CMakeLists.txt

ルート CMakeLists.txt には、gtest、src、および test フォルダーの add_subdirectory が含まれています。各部分が正しくコンパイルされることを確認するために、「Hello world」アプリと単純な EXPECT_TRUE(true) テストを正常にコンパイルして実行しました。残念ながら、ソース ファイルをテストに含める方法が見つかりませんでした。以下のプロジェクト構成で可能でしょうか?

PSソースをライブラリとしてコンパイルしてテストにリンクすることが可能であることは知っていますが、単体テストではなく統合テストに適しているため、そのアプローチは嫌いです...

編集:ツリーにクラス名を追加しました

4

2 に答える 2

2

ルート CMakeLists.txt のレベルでグローバル変数を追加できます。

set(ALL_SRCS CACHE INTERNAL "mydescription" FORCE)

最初の add_subdirectory(src) では、次のことができます。

set(ALL_SRCS ${ALL_SRCS} blabla.cpp CACHE INTERNAL "description")

add_subdirectory(test) では、次の操作を続けます。

set(ALL_SRCS ${ALL_SRCS} bla_test.cpp CACHE INTERNAL "description")

次に、すべてのソースファイルを使用して、add_executable、またはライブラリなどを実行できます。

編集: CMake でグローバル変数のトリックを追加します。

于 2012-12-10T09:14:42.070 に答える
1

ルートCMakeLists.txtに、include_directories(src)これを追加できます。これは、テストでも使用されます。あなたができるもう一つのことは、テストでCMakeLists.txtを追加することですinclude_directories(${<projectName>_SOURCE_DIR})。ここで、projectNameは、src / CMakeLists.txtで使用project(myproj)して指定された名前です(もちろん、そこでプロジェクトを指定した場合。プロジェクトに関するドキュメントも確認してください) 。

于 2012-12-10T08:51:10.453 に答える