如何修改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
相关产品推荐
相关产品推荐

