Cmake FetchContent谷歌测试不适用于windows



在cmake中使用FetchContent()将gtest集成到项目中似乎缺少gtest/gtest.h的相关包含路径

在linux上构建与gcc 配合使用效果良好

cmake ..
cmake --build .

但是使用msvc 在窗口上构建

"C:Program Files (x86)Microsoft Visual Studio2019ProfessionalVCAuxiliaryBuildvcvarsall" x86
cmake -G "Ninja" ..
cmake --build .

结果:

Cannot open include file: 'gtest/gtest.h': No such file or directory

fatal error C1083: Cannot open include file: 'gtest/internal/gtest-port.h

主要cmake:

cmake_minimum_required(VERSION 3.9)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
set(VERBOSE ON)
project(test)
option(UNIT_TESTS "Build the unit tests" ON)
if(UNIT_TESTS)
enable_testing()
add_subdirectory(test)
endif()

以下是相关的测试cmake:

include(FetchContent)
FetchContent_Declare(gtest
GIT_REPOSITORY https://github.com/google/googletest
GIT_TAG release-1.11.0)
set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
FetchContent_MakeAvailable(gtest)
set(project "test_example")
add_executable(${project} example.cpp)
target_link_libraries(${project} gtest_main)
include(GoogleTest)
gtest_discover_tests(${project})

更新

刚刚使用clang编译器在windows上进行了测试,它可以工作,所以似乎是msvc特有的。

FetchContent_Declare(gtest更改为FetchContent_Declare(googletest解决了这个问题。我找到了这个页面https://github.com/google/googletest/issues/2457这似乎和我的问题完全一样。

相关内容

  • 没有找到相关文章

最新更新