gpt4 book ai didi

c++ - CMake 中的 OpenCV 和 Gtest 冲突

转载 作者:太空宇宙 更新时间:2023-11-04 09:40:04 25 4
gpt4 key购买 nike

我正在尝试对我的应用程序进行一些 Google 测试,但我在 OpenCVGTest 之间遇到了一些冲突:

/usr/lib/gcc/i686-linux-gnu/4.6/../../../../lib/libgtest.a(gtest-all.cc.o): In function `testing::internal::GTestLog::GTestLog(testing::internal::GTestLogSeverity, char const*, int)':
gtest-all.cc:(.text+0xdd84): multiple definition of `testing::internal::GTestLog::GTestLog(testing::internal::GTestLogSeverity, char const*, int)'
/usr/local/lib/libopencv_ts.a(ts_gtest.cpp.o):ts_gtest.cpp:(.text._ZN7testing8internal8GTestLogC2ENS0_16GTestLogSeverityEPKci+0x0): first defined here
...

GTest 用于opencv_ts 库。有谁知道如何解决这些多重定义?

我认为如果我只添加我在 OpenCV 中使用的库,它将得到解决,但我不知道该怎么做。我试过:

target_link_libraries(${Exec8name}_test ${OpenCV}/opencv_core.so* ... )

target_link_libraries(${Exec8name}_test ${OpenCV_LIBS}/opencv_core.so* ... )

target_link_libraries(${Exec8name}_test ${OpenCV_LIBS_DIR}/opencv_core.so* ... )

等,但我只收到未找到的错误或No rule to make target

我试图删除两者之一,但出现错误

/usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): relocation 0 has invalid symbol index 11
/usr/bin/ld: /usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info): relocation 1 has invalid symbol index 12
...

这是我的 CMakeLists.txt

cmake_minimum_required(VERSION 2.8)

option(test "Build all tests." OFF)

set(EXECUTABLE_NAME MyProj)

project(${EXECUTABLE_NAME})

set(CMAKE_CXX_FLAGS "-g -Wall")

include_directories( src/main/cpp
${Boost_INCLUDE_DIRS}
)

find_package(OpenCV REQUIRED)
find_package(Boost REQUIRED COMPONENTS filesystem
system
regex
program_options)

add_executable(${EXECUTABLE_NAME}_Sol2
src/main/cpp/main.cpp

src/main/cpp/solution2/MySol2.hpp
src/main/cpp/solution2/MySol2.cpp
)

target_link_libraries(${EXECUTABLE_NAME}_Sol2 ${OpenCV_LIBS}
${Boost_LIBRARIES}
)

if (test)
find_package(GTest REQUIRED)

enable_testing()

include_directories( ${GTEST_INCLUDE_DIRS} )

add_executable(${EXECUTABLE_NAME}_Sol2_test
src/test/cpp/test_Sol2.cpp

src/main/cpp/solution2/MySol2.hpp
src/main/cpp/solution2/MySol2.cpp
)


target_link_libraries(${EXECUTABLE_NAME}_Sol2_test ${OpenCV_LIBRARIES}
${Boost_LIBRARIES}
)

target_link_libraries(${EXECUTABLE_NAME}_Sol2_test ${GTEST_LIBRARIES}
pthread
)

add_test(${EXECUTABLE_NAME}_Sol2_test
${CMAKE_CURRENT_BINARY_DIR}/${EXECUTABLE_NAME}_Sol2_test
)

endif()

谁能告诉我一些解决方法?

最佳答案

“opencv_ts”模块包含 gtest,因此您可以只包括所需的 OpenCV 模块,排除所有“ts”模块。例如:

find_package(OpenCV REQUIRED core imgproc highgui)

关于c++ - CMake 中的 OpenCV 和 Gtest 冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22486748/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com