如何使用 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? (未见测试)的主要内容,如果未能解决你的问题,请参考以下文章

如何在 CMake 中包含 boost::future?

C++ Cmake OpenCV

Cmake 中的 GCC -Bprefix

如何在构建之前使CMake运行python脚本,以便为我的项目生成文件以在构建中使用?

无法在 netbeans 中运行 C++ CMake 项目

如何使用 Visual Studio Code 为 cmake 添加预构建步骤?