From 5dc7aa3336b464a5d272184e8225737aea291164 Mon Sep 17 00:00:00 2001 From: Krzysztof Parzyszek Date: Tue, 5 Oct 2021 09:52:38 -0500 Subject: [PATCH] [cpptest] Get the full path to gtest_main library The gtest framework requires two libraries: gtest and gtest_main. The former is found via "find_library", which returns the full path to it. The latter is only added to target_link_libraries as "gtest_main". Adding "gtest_main" to target_link_libraries causes cmake to emit -lgtest_main, but the path to it is not provided (there is no -L flag for it), and the link step can fail. As a fix, use find_library to get the full path to gtest_main as well. --- CMakeLists.txt | 6 +++++- cmake/modules/StandaloneCrt.cmake | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 87fa2e059abb..aa762072ce24 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -387,6 +387,9 @@ endif(USE_PROFILER) # Enable ctest if gtest is available find_path(GTEST_INCLUDE_DIR gtest/gtest.h) find_library(GTEST_LIB gtest "$ENV{GTEST_LIB}") +if(GTEST_LIB) + find_library(GTEST_MAIN_LIB gtest_main "$ENV{GTEST_LIB}") +endif() if(GTEST_INCLUDE_DIR AND GTEST_LIB) enable_testing() include(CTest) @@ -589,7 +592,8 @@ if(GTEST_INCLUDE_DIR AND GTEST_LIB) file(GLOB_RECURSE TEST_SRCS tests/cpp/*.cc) add_executable(cpptest ${TEST_SRCS}) target_include_directories(cpptest SYSTEM PUBLIC ${GTEST_INCLUDE_DIR}) - target_link_libraries(cpptest PRIVATE ${TVM_TEST_LIBRARY_NAME} ${GTEST_LIB} gtest_main pthread dl) + target_link_libraries(cpptest + PRIVATE ${TVM_TEST_LIBRARY_NAME} ${GTEST_LIB} ${GTEST_MAIN_LIB} pthread dl) set_target_properties(cpptest PROPERTIES EXCLUDE_FROM_ALL 1) set_target_properties(cpptest PROPERTIES EXCLUDE_FROM_DEFAULT_BUILD 1) gtest_discover_tests(cpptest) diff --git a/cmake/modules/StandaloneCrt.cmake b/cmake/modules/StandaloneCrt.cmake index 1ced2b8ad892..456953b6e425 100644 --- a/cmake/modules/StandaloneCrt.cmake +++ b/cmake/modules/StandaloneCrt.cmake @@ -138,7 +138,7 @@ if(USE_MICRO) file(GLOB TEST_SRCS ${CMAKE_SOURCE_DIR}/tests/crt/*.cc) add_executable(crttest ${TEST_SRCS}) target_include_directories(crttest SYSTEM PUBLIC ${GTEST_INCLUDE_DIR} ${CMAKE_CURRENT_BINARY_DIR}/standalone_crt/include ${CMAKE_SOURCE_DIR}/src/runtime/micro) - target_link_libraries(crttest PRIVATE ${cmake_crt_libraries} ${GTEST_LIB} gtest_main pthread dl) + target_link_libraries(crttest PRIVATE ${cmake_crt_libraries} ${GTEST_LIB} ${GTEST_MAIN_LIB} pthread dl) set_target_properties(crttest PROPERTIES EXCLUDE_FROM_ALL 1) set_target_properties(crttest PROPERTIES EXCLUDE_FROM_DEFAULT_BUILD 1) gtest_discover_tests(crttest)