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 等依赖项?
经过一番尝试和错误后,发现链接 gmock 库就足够了,如下所示:
target_link_libraries(hello_test gtest_main gmock_main)
Run Code Online (Sandbox Code Playgroud)
我不确定为什么这会起作用,但我希望 cmake 包含标头,无论链接阶段如何。
我可能对 cmake 的工作原理有一些基本的误解,所以我希望得到任何澄清。