You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改CMakeLists.txt以在Googletest中使用GoogleMock?

修改CMakeLists.txt以支持GoogleMock

问题出在当前配置仅链接了GTest的核心库,未引入GoogleMock的依赖。只需调整链接的CMake目标即可解决<gmock/gmock.h>无法生效的问题,具体修改如下:

方案1:使用预定义的GoogleMock主函数入口

将target_link_libraries中的GTest::gtest_main替换为GTest::gmock_main,这个目标会自动包含GMock、GTest的头文件路径及对应的库,同时提供预定义的测试主函数。

修改后的完整CMakeLists.txt:

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/03597a01ee50ed33e9dfd640b249b4be3799d395.zip
)
# For Windows: Prevent overriding the parent project's compiler/linker settings
set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
FetchContent_MakeAvailable(googletest)
enable_testing()

add_executable(
  hello_test
  hello_test.cc
)
target_link_libraries(
  hello_test
  GTest::gmock_main
)

include(GoogleTest)
gtest_discover_tests(hello_test)

方案2:自定义测试主函数入口

如果你的测试代码自己实现了main函数(比如手动初始化GTest/GMock),则只需链接GTest::gmock和GTest::gtest两个目标:

target_link_libraries(
  hello_test
  GTest::gmock
  GTest::gtest
)

说明:通过FetchContent_MakeAvailable(googletest)拉取的代码已经包含GoogleMock,无需额外添加依赖库的拉取逻辑,只需正确链接对应的CMake目标即可让编译器找到GMock的头文件和库文件。

内容的提问来源于stack exchange,提问作者roi_saumon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 16:15:42