有一个现成的项目。在其中一个cmake文件中有一个源代码:
find_package(GTest REQUIRED)
if (NOT GTest_FOUND)
message(FATAL_ERROR "Cannot find Google Test Framework!")
endif()
发出错误:“无法找到Google测试框架!”
如何修复错误?
答案 0 :(得分:1)
FindGTest.cmake
文件使用环境变量GTEST_ROOT
。
您可以将此变量添加到系统中,也可以将其添加到CMakeLists.txt
文件中:
set(GTEST_ROOT "c:/path/to/gtest/root" CACHE PATH "path to gtest").
这应该可以解决您的问题。当然可以将gtest完全添加到项目中(如Luis Miglietti建议的那样),但这可能不是你想要做的第一次尝试。
答案 1 :(得分:0)
自2009年以来,CMake提供FindGTest.cmake
模块......
我更喜欢在您的CMake项目中加入googletest,就像在googletest文档中解释一样 https://github.com/google/googletest/tree/master/googletest#incorporating-into-an-existing-cmake-project
答案 2 :(得分:-1)
这可能对您有用,因此您不必依赖本地Google测试安装,如果您在计算机上安装了Google测试,这应该独立工作
您可以将其添加到您的cmake文件中(您应该根据项目结构处理正确的链接/包含)
这将下载google测试,配置安装并在主构建文件夹中的 vendor / gtm / gtest (您可以随时更改此内容)中进行构建。然后,您可以将 gtest 链接到可执行文件,以便您可以从那里运行测试
include(ExternalProject)
find_package(Git REQUIRED)
# Build googletest
ExternalProject_Add(
googletest
PREFIX "vendor/gtm"
GIT_REPOSITORY "https://github.com/google/googletest.git"
GIT_TAG release-1.8.0
TIMEOUT 10
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
INSTALL_COMMAND ""
UPDATE_COMMAND ""
)
# Build gtest
ExternalProject_Add(
gtest_src
PREFIX "vendor/gtm"
SOURCE_DIR "vendor/gtm/src/googletest/googletest"
INSTALL_DIR "vendor/gtm/gtest"
CMAKE_ARGS
-DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}/vendor/gtm/gtest
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
-DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}
DOWNLOAD_COMMAND ""
UPDATE_COMMAND ""
)
# Prepare gtest
ExternalProject_Get_Property(gtest_src install_dir)
set(GTEST_INCLUDE_DIR ${install_dir}/include)
set(GTEST_LIBRARY_PATH ${install_dir}/lib/libgtest.a)
file(MAKE_DIRECTORY ${GTEST_INCLUDE_DIR})
add_library(gtest STATIC IMPORTED)
set_property(TARGET gtest PROPERTY IMPORTED_LOCATION ${GTEST_LIBRARY_PATH})
set_property(TARGET gtest APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${GTEST_INCLUDE_DIR})
add_dependencies(gtest_src googletest)
add_dependencies(gtest gtest_src)
然后,您可以将 gtest 链接到可执行文件,例如
add_executable(tester test/tester.cc)
target_link_libraries(tester gtest)
enable_testing()
add_test(<library> tester)