我正在尝试将 gtest 与 libtorch 一起使用。目前,我有一个基本的测试程序:
#include <gtest/gtest.h>
TEST(WorldMapTests, FirstTest) {
ASSERT_TRUE(true);
}
然后我有一个主要制作,我在第三方文件夹中获取火炬,如下所示:
set(TORCH_INSTALL_PREFIX "${CMAKE_CURRENT_SOURCE_DIR}/third-party/libtorch")
set(Torch_DIR "${TORCH_INSTALL_PREFIX}/share/cmake/Torch")
set(pybind11_INCLUDE_DIR "${TORCH_INSTALL_PREFIX}/include/pybind11")
然后我的测试看起来像:
cmake_minimum_required(VERSION 3.0)
set(CMAKE_CXX_STANDARD 14)
set(This ${PROJECT_NAME}_test)
set(Sources
cpp/WorldMapTests.cpp
)
############################################################## gtest
# Download and unpack googletest at configure time
configure_file(CMakeLists.txt.in googletest-download/CMakeLists.txt)
--- SNIP --- (test configure stuff from the github)
endif()
############################################################## gtest
add_executable(${This} ${Sources})
target_link_libraries(${This} PUBLIC
${TORCH_LIBRARIES}
gtest
gtest_main
${PROJECT_NAME}
)
target_include_directories(${This} PUBLIC ${TORCH_INCLUDE_DIRS} ${PYTHON_INCLUDE_DIRS})
target_compile_options(${This} PUBLIC ${TORCH_CXX_FLAGS})
add_test(
NAME ${This}
COMMAND ${This}
)
当我在发布版本中编译时它很好。如果我的链接目录中不包含“${TORCH_LIBRARIES}”也可以。但是,当我链接到 Torch 并在调试下进行测试时,我得到以下信息:
.../test/cpp/WorldMapTests.cpp:5: undefined reference to `testing::internal::GetBoolAssertionFailureMessage(testing::AssertionResult const&, char const*, char const*, char const*)'
我认为这是因为torch 利用了测试并在发布版本下编译。我在torch下的lib文件夹中手动找到了一个gtest.so并删除了它,看看它是否可以解决它,但它没有。