У меня проблема с простой сборкой приложения OpenCV с CMake. Я потратил много часов, чтобы понять, в чем дело, но все же я понятия не имею ...
Я использую CLion в качестве IDE в Ubuntu 18.04
My CMakeList.txt
cmake_minimum_required(VERSION 3.15)
project(qt_segmentation)
set(CMAKE_CXX_STANDARD 11)
find_package( OpenCV REQUIRED )
add_executable(qt_segmentation main.cpp)
target_include_directories(qt_segmentation PUBLIC ${OpenCV_INCLUDE_DIRS})
target_link_libraries(qt_segmentation ${OPENCV_LIBS})
main. cpp
#include <iostream>
#include <opencv2/opencv.hpp>
int main()
{
std::cout<<cv::getVersionRevision()<<std::endl;
return 0;
}
Кажется, что сам компилятор работает правильно. Я могу скомпилировать свой файл с помощью следующей команды:
g++ -std=c++11 main.cpp `pkg-config --libs --cflags opencv` -o main
Ошибка:
====================[ Build | qt_segmentation | Debug ]=========================
/home/bienqq/clion-2019.3.4/bin/cmake/linux/bin/cmake --build /home/bienqq/CLionProjects/qt-segmentation/cmake-build-debug --target qt_segmentation -- -j 2
-- Configuring done
-- Generating done
-- Build files have been written to: /home/bienqq/CLionProjects/qt-segmentation/cmake-build-debug
[ 50%] Linking CXX executable qt_segmentation
CMakeFiles/qt_segmentation.dir/main.cpp.o: In function `main':
/home/bienqq/CLionProjects/qt-segmentation/main.cpp:6: undefined reference to `cv::getVersionRevision()'
CMakeFiles/qt_segmentation.dir/main.cpp.o: In function `cv::String::~String()':
/usr/local/include/opencv2/core/cvstd.hpp:648: undefined reference to `cv::String::deallocate()'
CMakeFiles/qt_segmentation.dir/main.cpp.o: In function `cv::String::operator=(cv::String const&)':
/usr/local/include/opencv2/core/cvstd.hpp:656: undefined reference to `cv::String::deallocate()'
collect2: error: ld returned 1 exit status
CMakeFiles/qt_segmentation.dir/build.make:83: recipe for target 'qt_segmentation' failed
make[3]: *** [qt_segmentation] Error 1
CMakeFiles/Makefile2:75: recipe for target 'CMakeFiles/qt_segmentation.dir/all' failed
make[2]: *** [CMakeFiles/qt_segmentation.dir/all] Error 2
CMakeFiles/Makefile2:82: recipe for target 'CMakeFiles/qt_segmentation.dir/rule' failed
make[1]: *** [CMakeFiles/qt_segmentation.dir/rule] Error 2
Makefile:118: recipe for target 'qt_segmentation' failed
make: *** [qt_segmentation] Error 2
Я также напечатал значения свойств CMake:
OpenCV_INCLUDE_DIRS=/usr/local/include;/usr/local/include/opencv
OpenCV_LIBS=opencv_calib3d;opencv_core;opencv_dnn;opencv_features2d;opencv_flann;opencv_highgui;opencv_imgcodecs;opencv_imgproc;opencv_ml;opencv_objdetect;opencv_photo;opencv_shape;opencv_stitching;opencv_superres;opencv_video;opencv_videoio;opencv_videostab
С моей точки зрения у меня есть проверил все, но все равно не работает ...
Не могли бы вы помочь? Спасибо :)