我试图从源代码构建GTest,然后使用cmake将我的目标链接到它。但我看到了这个错误
mygtest % cmake --build build
[ 50%] Building CXX object CMakeFiles/hello_test.dir/mytest.cpp.o
/path/to/test/mygtest/mytest.cpp:1:10: fatal error: 'gtest/gtest.h' file not found
#include <gtest/gtest.h>
^~~~~~~~~~~~~~~
1 error generated.
make[2]: *** [CMakeFiles/hello_test.dir/mytest.cpp.o] Error 1
make[1]: *** [CMakeFiles/hello_test.dir/all] Error 2
make: *** [all] Error 2
我的问题是我在这里能错过什么?
这是我的CMakeList文件
cmake_minimum_required(VERSION 3.14)
project(my_project)
set(CMAKE_CXX_STANDARD 14)
find_library(
GTEST_MAIN
gtest_main
PATHS /path/to/googletest/build/lib/
NO_DEFAULT_PATH
)
enable_testing()
add_executable(
hello_test
mytest.cpp
)
target_link_libraries(
hello_test
${GTEST_MAIN}
)
include(GoogleTest)
gtest_discover_tests(hello_test)
我试过什么?
get_target_property(HELLO_TEST_LIBRARIES hello_test LINK_LIBRARIES)
include(CMakePrintHelpers)
cmake_print_variables(HELLO_TEST_LIBRARIES)
// OUTPUT
-- HELLO_TEST_LIBRARIES="/path/to/googletest/build/lib/libgtest_main.a"
使用here (Gtest)然后链接GTest::gtest工作的
发布于 2022-05-25 01:07:07
我愿意接受任何其他更好的答案,但我会把我目前的解决方案寄给那些可能感兴趣的人。
谢谢亚历克斯·雷克和@空间土豆的评论。根据建议,将下面的代码插入您的CMakeLists.txt将允许您自动下载googletest和从源代码构建。
FetchContent_Declare(
googletest
GIT_REPOSITORY https://github.com/google/googletest.git
GIT_TAG main
SUBBUILD_DIR ${PROJECT_BINARY_DIR}/googletest-subbuild
BINARY_DIR ${PROJECT_BINARY_DIR}/googletest-build
SOURCE_DIR ${PROJECT_BINARY_DIR}/googletest-src
)
FetchContent_Populate(
googletest
)
execute_process(COMMAND cmake -S. -B${googletest_BINARY_DIR} WORKING_DIRECTORY ${googletest_SOURCE_DIR})
execute_process(COMMAND cmake --build . WORKING_DIRECTORY ${googletest_BINARY_DIR})
set(GTEST_LIBRARY ${googletest_BINARY_DIR}/lib/libgtest.a)
set(GTEST_INCLUDE_DIR ${googletest_SOURCE_DIR}/googletest/include)
set(GTEST_MAIN_LIBRARY ${googletest_BINARY_DIR}/lib/libgtest_main.a)
find_package(GTest REQUIRED)
然后,您可以将其链接到您的目标
target_link_libraries(<target> GTest::gtest_main)
https://stackoverflow.com/questions/72354684
复制相似问题