次の構造のプロジェクトがあります。
linalg
├── build
├── CMakeLists.txt
├── docs
│ └── Doxyfile
├── include
│ └── linalg
│ └── vector3.hpp
├── src
│ ├── CMakeLists.txt
│ └── linalg
│ └── vector3.cpp
└── test
├── CMakeLists.txt
└── linalg
└── test_vector3.cpp
ファイル test_vector3.cpp は、2 つの簡単なテストを提供する gtest 単体テスト ファイルです。最上位の CMakeLists.txt は、インクルードをセットアップし、src および test サブディレクトリを追加するだけです。
cmake_minimum_required(VERSION 2.8)
project(linalg)
include_directories(include)
add_subdirectory(src)
add_subdirectory(test)
src/CMakeLists.txt ファイルは、vector3.cpp を静的ライブラリにコンパイルします。
cmake_minimum_required(VERSION 2.8)
add_library(linalg linalg/vector3.cpp)
test/CMakeLists.txt ファイルは、/usr/share/cmake-2.8/Modules/FindGTest.cmake で提供されている例に基づいています。
cmake_minimum_required(VERSION 2.8)
enable_testing()
find_package(GTest REQUIRED)
include_directories(${GTEST_INCLUDE_DIRS})
add_executable(test_vector3 linalg/test_vector3.cpp)
target_link_libraries(test_vector3 linalg ${GTEST_BOTH_LIBRARIES} pthread)
add_test(test_vector3 test_vector3)
次に、次を実行します。
cd build
cmake ..
make
liblinalg.a ライブラリを build/src に正しくコンパイルし、test_vector3 実行可能ファイルを build/test に正しくコンパイルします。test_vector3 実行可能ファイルを実行すると、すべてのテストに合格したことを示す出力が googletest から得られますが、実行してmake test
も何も出力されず、実行するctest ..
と次のようなメッセージが表示されます。
Test project /home/ryan/GitHub/linalg/build
No tests were found!!!
足りないものはありますか?それとも、ctest が gtest でどのように機能するかを誤解しているだけですか?