我知道有很多人认为这件事有重复,但由于没有一个答案对我有用,我宁愿再问另一个问题。
我的项目不能用CMake编译:
找到包配置文件:/usr/share/OpenCV/OpenCVConfig.cmake但它将OpenCV_FOUND设置为FALSE,因此包“OpenCV”被认为是未找到。
我的CMakeLists.txt如下:
cmake_minimum_required( VERSION 2.8 )
project( Tests )
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11" )
if(WIN32)
# set( CMAKE_PREFIX_PATH "${CMAKE_PREFIX_PATH} C:\\OpenCV" )
set( OpenCV_DIR "C:\\OpenCV\\build" )
elseif(UNIX)
set( OpenCV_DIR "/usr/share/OpenCV" )
set( PKG_CONFIG_PATH "/usr/lib/pkgconfig" )
endif()
find_package( OpenCV REQUIRED )
if( OpenCV_FOUND )
message( "Found OpenCV" )
message( "Includes: " ${OpenCV_INCLUDE_DIRS} )
else()
message( "OpenCV not found, woot" )
endif( OpenCV_FOUND )
add_executable( Test ShapeRecognition/prog.cpp )
target_link_libraries( Test ${OpenCV_LIBS} )
错误发生在行find_package(OpenCV REQUIRED)上,因此无论如何都不会显示以下消息。
但是在控制台中编译时,使用以下命令:
g++ -o prog -std=c++11 `pkg-config --libs --cflags opencv` prog.cpp
编译没有问题,程序可以很好地启动。
命令“pkg-config --libs opencv”给了我(有点长,我同意):
-lopencv_stitching -lopencv_superres -lopencv_videostab -lopencv_aruco -lopencv_bgsegm -lopencv_bioinspired -lopencv_ccalib -lopencv_dnn -lopencv_dpm -lopencv_fuzzy -lopencv_line_descriptor -lopencv_optflow -lopencv_plot -lopencv_reg -lopencv_saliency -lopencv_stereo -lopencv_structured_light -lopencv_rgbd -lopencv_surface_matching -lopencv_tracking -lopencv_datasets -lopencv_text -lopencv_face - lopencv_xfeatures2d -lopencv_shape -lopencv_video -lopencv_ximgproc -lopencv_calib3d -lopencv_features2d -lopencv_flann -lopencv_xobjdetect -lopencv_objdetect -lopencv_ml -lopencv_xphoto -lopencv_highgui -lopencv_videoio -lopencv_imgcodecs -lopencv_photo -lopencv_imgproc -lopencv_core
命令“pkg-config --cflags opencv”只是给了我(CMAKE_INSTALL_PREFIX设置为/ usr):
-I / USR /包含/ OpenCV的
如果有人有解决方案,我很乐意接受。
答案 0 :(得分:3)
好的,我明白了。太糟糕了,我已经坚持这么久了。
我正在使用CLion,因此解决方案可能有所不同,但您所要做的就是删除缓存并重新加载项目(我个人去了工具> CMake>删除缓存和重新加载项目)。
如果命令行有效,而CMake没有,我想这就是你要做的全部。
我希望它最终会帮助那些有这种愚蠢错误的人。