如何在从 Github 下载的 CMake 中包含 Google Mock

Adr*_*ift 4 c++ cmake googletest googlemock

在 google test 的快速入门(https://google.github.io/googletest/quickstart-cmake.html)中,我找到了以下代码来从 Github 下载 google test 依赖项:

cmake_minimum_required(VERSION 3.14)
project(my_project)

# GoogleTest requires at least C++14
set(CMAKE_CXX_STANDARD 14)

include(FetchContent)
FetchContent_Declare(
  googletest
  URL https://github.com/google/googletest/archive/609281088cfefc76f9d0ce82e1ff6c30cc3591e5.zip
)

FetchContent_MakeAvailable(googletest)

enable_testing()

add_executable(
  hello_test
  hello_test.cc
)
target_link_libraries(
  hello_test
  gtest_main
)

include(GoogleTest)
gtest_discover_tests(hello_test)
Run Code Online (Sandbox Code Playgroud)

这适用于谷歌测试,并且在测试文件 hello_test.cc 中我可以#include "gtest/gtest.h"成功包含。

但是,我还想包括 Gmock:#include "gmock/gmock.h"但它找不到它。

如何包含 gmock 下载 gtest 等依赖项?

Adr*_*ift 6

经过一番尝试和错误后,发现链接 gmock 库就足够了,如下所示:

target_link_libraries(hello_test gtest_main gmock_main)
Run Code Online (Sandbox Code Playgroud)

我不确定为什么这会起作用,但我希望 cmake 包含标头,无论链接阶段如何。

我可能对 cmake 的工作原理有一些基本的误解,所以我希望得到任何澄清。