C++ 使用googletest设置gmock
有人能帮我用GoogleMock编译google测试框架吗?目前,我有以下cmake文件:C++ 使用googletest设置gmock,c++,cmake,googletest,gmock,C++,Cmake,Googletest,Gmock,有人能帮我用GoogleMock编译google测试框架吗?目前,我有以下cmake文件: cmake_minimum_required(VERSION 3.2) if (CMAKE_VERSION VERSION_LESS 2.8.11) include_directories(BEFORE SYSTEM "${gtest_SOURCE_DIR}/include" "${gmock_SOURCE_DIR}/include") else() target_include_dir
cmake_minimum_required(VERSION 3.2)
if (CMAKE_VERSION VERSION_LESS 2.8.11)
include_directories(BEFORE SYSTEM
"${gtest_SOURCE_DIR}/include" "${gmock_SOURCE_DIR}/include")
else()
target_include_directories(gmock_main SYSTEM BEFORE INTERFACE
"${gtest_SOURCE_DIR}/include" "${gmock_SOURCE_DIR}/include")
endif()
set(CMAKE_CXX_STANDARD 11)
# Locate GTest
find_package(GTest REQUIRED)
include_directories(${GTEST_INCLUDE_DIRS})
# Link runTests with what we want to test and the GTest and pthread library
add_executable(runTests tests.cpp)
target_link_libraries(runTests gmock_main)
target_link_libraries(runTests ${GTEST_LIBRARIES} pthread)
目前我遇到了这个错误:无法为目标“gmock_main”指定包含目录,该目标不是由该项目生成的
我知道这是因为上面的第7行,但是如果我删除整个if-else语句,我会得到以下错误:致命错误:gmock/gmock.h:没有这样的文件或目录
编译终止
如果有人能帮助我,我将不胜感激。您正在使用
find_package
查找GTest库。。。但是正在使用gmock
库。另外,拥有cmake_minimum_required(版本3.2)
意味着只有cmake 3.2+可以执行CMakeLists.txt,因此检查版本是否小于2.8.12是没有用的。我考虑过包含if-else语句,因为这是谷歌模拟教程在git存储库中显示的方式,所以我把它抄了过来。用find_包定位GTest库是什么意思,但我使用的是mock?Dp您知道我应该做什么吗?如果您遵循,它会谈到,当您使用add_subdirectory()
而不是find_package()
包含GTest和GMock基础结构时。在这种情况下,“if else语句”应该位于相应的add_subdirectory
call之后,因此gmock_main
target将在此时定义。我不明白在哪里应该使用[add_subdirectory]而不是[find_package]。如果我更改了[find_package]行,我应该将其更改为什么?如果您的源代码中的目录gtest
下有googletest源代码,请使用add_子目录(gtest EXCLUDE_FROM_ALL)
。否则,使用谷歌测试手册中描述的代码。您正在使用find_package
查找GTest库。。。但是正在使用gmock
库。另外,拥有cmake_minimum_required(版本3.2)
意味着只有cmake 3.2+可以执行CMakeLists.txt,因此检查版本是否小于2.8.12是没有用的。我考虑过包含if-else语句,因为这是谷歌模拟教程在git存储库中显示的方式,所以我把它抄了过来。用find_包定位GTest库是什么意思,但我使用的是mock?Dp您知道我应该做什么吗?如果您遵循,它会谈到,当您使用add_subdirectory()
而不是find_package()
包含GTest和GMock基础结构时。在这种情况下,“if else语句”应该位于相应的add_subdirectory
call之后,因此gmock_main
target将在此时定义。我不明白在哪里应该使用[add_subdirectory]而不是[find_package]。如果我更改了[find_package]行,我应该将其更改为什么?如果您的源代码中的目录gtest
下有googletest源代码,请使用add_子目录(gtest EXCLUDE_FROM_ALL)
。否则,采用谷歌测试手册中描述的代码。