CMake 在 Windows 上找不到 GTest

问题描述 投票:0回答:1

我正在使用 CMake 在 Qt Creator 中构建 Google 测试项目。该库位于 C:/cpplibraries/googletest-1.13.0。

这是为项目自动生成的 CMakeLists.txt 文件:

cmake_minimum_required(VERSION 3.5)

project(testProj LANGUAGES CXX)

enable_testing()

set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

if ($ENV{GOOGLETEST_DIR})
    get_filename_component(_GTEST_BASE $ENV{GOOGLETEST_DIR} REALPATH)
elseif (EXISTS "C:/cpplibraries/googletest-1.13.0") # set by QC
    get_filename_component(_GTEST_BASE "C:/cpplibraries/googletest-1.13.0" REALPATH) # set by QC
endif()

if (NOT GTEST_ROOT)
    if (_GTEST_BASE)
        message("Setting GTEST_ROOT to ${_GTEST_BASE}")
        set(GTEST_ROOT ${_GTEST_BASE})
    else()
        message("No GTEST_ROOT specified - using system defaults.")
    endif()
endif()

find_package(GTest REQUIRED)
if (NOT GTest_FOUND)
    message (FATAL_ERROR "No GTest Found")
endif()

add_executable(testProj main.cpp tst_testproj.cpp)
add_test(NAME testProj COMMAND testProj)

target_link_libraries(testProj PRIVATE GTest::GTest)
if (GMock_FOUND)
    target_link_libraries(testProj INTERFACE GTest::GMock)
endif()

当我运行上述命令时,出现以下错误:

C:\Projects\testproj\CMakeLists.txt:25: error: Could NOT find GTest (missing: GTEST_LIBRARY GTEST_INCLUDE_DIR
GTEST_MAIN_LIBRARY)

Call stack:
  C:/Projects/testproj/CMakeLists.txt:25 (find_package)
  C:/Qt/Tools/CMake_64/share/cmake-3.27/Modules/FindGTest.cmake:270 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
  C:/Qt/Tools/CMake_64/share/cmake-3.27/Modules/FindPackageHandleStandardArgs.cmake:600 (_FPHSA_FAILURE_MESSAGE)
  C:/Qt/Tools/CMake_64/share/cmake-3.27/Modules/FindPackageHandleStandardArgs.cmake:230 (message)

我已经在其目录中构建了 Google Test 库,并且我不想使用将其包含在 CMake 配置中的 Git 方法

我尝试在find_package中使用小写gtest,并将GTest_ROOT和(本地)CMAKE_PREFIX_PATH设置为googletest目录,但它们不能解决问题。

qt cmake
1个回答
0
投票

哇,太棒了。感谢 Tsyvarev 的提示。 因此,我从项目的 CMakeLists.txt 中删除了以下内容:

if ($ENV{GOOGLETEST_DIR}) get_filename_component(_GTEST_BASE $ENV{GOOGLETEST_DIR} REALPATH) elseif (EXISTS "C:/cpplibraries/googletest-1.13.0") # set by QC get_filename_component(_GTEST_BASE "C:/cpplibraries/googletest-1.13.0" REALPATH) # set by QC endif() if (NOT GTEST_ROOT) if (_GTEST_BASE) message("Setting GTEST_ROOT to ${_GTEST_BASE}") set(GTEST_ROOT ${_GTEST_BASE}) else() message("No GTEST_ROOT specified - using system defaults.") endif() endif()

我进入了 Google Test 目录,执行了 Google Test 文档中所写的操作(
mkdir build

cd build
cmake ..
cmake install .
)。
成功了! CMake 不再抱怨它“找不到 GTest”...但它随后抱怨安装目录的 lib 文件夹中没有“gtest.lib”。

我回到“build”文件夹,在 VS2019 中打开解决方案文件(googletest-distribution.sln)

具有管理员权限

,然后构建每个发布项目(ALL_BUILD、gtest、gtest_main、INSTALL、RUN_TESTS、ZERO_CHECK)-我不太可能必须将它们全部构建出来,但我想确保我没有错过任何东西。 完成上述操作后,安装的lib文件夹中既有gtest.lib又有gtest_main.lib,并且CMake没有其他问题!

© www.soinside.com 2019 - 2024. All rights reserved.