如何使用 CMake 在 C++ 代码中运行 gtest? (未见测试)
Posted
技术标签:
【中文标题】如何使用 CMake 在 C++ 代码中运行 gtest? (未见测试)【英文标题】:How can I run gtest in C++ code using CMake? (tests not seen) 【发布时间】:2017-04-12 20:44:34 【问题描述】:我在我的大学 C++ 项目中使用 CLion 在 Windows 上工作,并尝试添加一些示例测试代码。我已经包含了来自 GitHub 的最新 Google 测试框架。我有单独的源代码和测试目录。问题是编译器看不到测试。我得到信息“空测试套件。”,虽然主要功能被正确调用。
我的目录如下所示:
- root
- src
- tests
* tests/components/ColorTest.cpp
* gtest.cpp
* CMakeLists.txt
- CMakeLists.txt
下面是代码:
CMakeLists.txt
cmake_minimum_required(VERSION 3.7)
project(SI_lab_2)
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_FLAGS "$CMAKE_CXX_FLAGS -std=gnu++0x")
include_directories(src)
include_directories(tests)
add_subdirectory(src)
add_subdirectory(tests)
测试/CMakeLists.txt
cmake_minimum_required(VERSION 3.7)
project(tests)
add_subdirectory(lib/googletest)
enable_testing()
include_directories($gtest_SOURCE_DIR_/include $gtest_SOURCE_DIR_)
set(SOURCE_FILES
gtest.cpp
tests/components/ColorTests.cpp)
add_executable(tests_run gtest.cpp)
target_link_libraries(tests_run gtest gtest_main)
add_test(eq tests_run)
tests/tests/components/ColorTests.cpp
#include <gtest/gtest.h>
TEST(ColorTests, eq)
EXPECT_EQ(1, 0);
TEST(ColorTests, noteq)
EXPECT_NE(1, 0);
tests/gtest.cpp
#include <gtest/gtest.h>
int main(int argc, char* argv[])
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
希望你能帮忙!
【问题讨论】:
【参考方案1】:在您的 tests/CMakeLists.txt 中,您应该将 add_executable(tests_run gtest.cpp) 替换为 add_executable(tests_run $SOURCE_FILES) .你写的测试没有被编译,因为你忘了把它添加到 add_executable
【讨论】:
以上是关于如何使用 CMake 在 C++ 代码中运行 gtest? (未见测试)的主要内容,如果未能解决你的问题,请参考以下文章