在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这似乎和我的问题完全一样。