tôi đang cố gắng để làm một thử nghiệm cho một chức năng sử dụng GoogleTest một bây giờ nó không được tìm nữa các EqFailure
điều:tài liệu tham khảo không xác định để thử nghiệm :: nội :: EqFailure trong gtest
/usr/include/gtest/gtest.h:1337: undefined reference to `testing::internal::EqFailure(char const*, char const*, testing::internal::String const&, testing::internal::String const&, bool)'
Tôi viết các thử nghiệm như thế này:
test_file.cpp:
#include <gtest/gtest.h>
#include "tools/CMorphology.hpp"
TEST(erode_Morph, crossKernel_Morph)
{
// initialize matrix to be eroded
cv::Mat matrix = (cv::Mat_<uchar>(5, 5) << 1, 1, 1, 1, 1,
1, 1, 0, 1, 1,
1, 1, 1, 1, 1,
1, 0, 1, 1, 1,
1, 1, 1, 1, 1
);
// initialize the cross kernel
cv::Mat kernel = cv::getStructuringElement(cv::MORPH_CROSS, cv::Size(3, 3));
// initialize the vector expected as output
cv::Mat verMat = (cv::Mat_<uchar>(5, 5) << 1, 1, 0, 1, 1,
1, 0, 0, 0, 1,
1, 0, 0, 1, 1,
0, 0, 0, 1, 1,
1, 0, 1, 1, 1);
// call erode(...)
Morphology morphology;
cv::Mat matrixOut;
morphology.erode(matrix, kernel, matrixOut);
for (int i = 0; i < matrixOut.rows; i++)
{
for (int j = 0; j < matrixOut.rows; j++)
{
EXPECT_EQ(matrixOut.ptr<uchar>(i)[j], verMat.ptr<uchar>(i)[j]);
}
}
}
tôi đang sử dụng OpenCV và nếu cần, tôi sẽ đăng các tệp khác.
CMake
tập tin là ở đây:
cmake_minimum_required(VERSION 2.8)
set(EXECUTABLE_NAME lpdetect)
project(${EXECUTABLE_NAME})
option(DEBUG "Display images for each step" OFF)
if (DEBUG)
set(CMAKE_CXX_FLAGS "-g -Wall -Wno-unknown-pragmas -Wno-reorder -Wno-sign-compare -Wno-switch -std=gnu++11 -DDISPLAY_IMGS -DBOOST_LOG_DYN_LINK")
else()
set(CMAKE_CXX_FLAGS "-g -Wall -Wno-unknown-pragmas -Wno-reorder -Wno-sign-compare -Wno-switch -std=gnu++11 -DBOOST_LOG_DYN_LINK")
endif()
find_package(OpenCV REQUIRED core
imgproc
features2d
nonfree
highgui
)
find_package(Boost REQUIRED COMPONENTS filesystem
program_options
system
thread
locale
regex
date_time
log
log_setup
timer
)
include_directories(src/main/cpp
${Boost_INCLUDE_DIRS}
${OpenCV2_INCLUDE_DIRS}
)
add_executable(${EXECUTABLE_NAME}
src/main/cpp/main.cpp
# and the other files
)
target_link_libraries(${EXECUTABLE_NAME} ${OpenCV_LIBS}
"-laws-cpp"
"-lcasablanca"
${Boost_LIBRARIES}
"-lcrypto"
)
find_package(GTest REQUIRED gtest_main
pthread)
enable_testing()
include_directories(${GTEST_INCLUDE_DIRS})
add_executable(${EXECUTABLE_NAME}_test src/test/cpp/test_Morphology.cpp
src/main/cpp/tools/CMorphology.cpp
src/main/cpp/tools/CMorphology.hpp
)
target_link_libraries(${EXECUTABLE_NAME}_test
${OpenCV_LIBRARIES}
${Boost_LIBRARIES}
${GTEST_LIBRARIES}
)
add_test(${EXECUTABLE_NAME}_test
${EXECUTABLE_NAME}_test
)
Tôi đã làm điều này một mưu chước trước, và sau khi một số cam kết nó được hiển thị lỗi này. Tại sao nó không còn tìm thấy điều đó?
Bạn có thể thử chạy xây dựng một cách chi tiết và xem liệu có tùy chọn thư mục liên kết '-L' đến thư mục chứa thư viện gtest của bạn không? Bạn đang liên kết tĩnh hay động? Lỗi xảy ra tại thời gian liên kết (không phải thời gian chạy), đúng không? – NicholasM
Điều đó xảy ra vào thời gian liên kết, vâng. Tôi đã liên kết nó động – sop
Nếu nó là 'Gtest_LIBRARIES' thay vì' GTEST_LIBRARIES'? Tôi không quá quen thuộc với cmake, nhưng ý tưởng cơ bản là cmake sẽ tạo ra '-lgtest' trên dòng lệnh và có thể là' -L/path/to/gtest'. Bạn có thể xem liệu đó có phải là một phần của dòng lệnh liên kết của bạn không? Có thể có liên quan: http://stackoverflow.com/questions/8507723/how-to-start-working-with-gtest-and-cmake – NicholasM