2016-04-14 115 views
0

我知道这个问题有很多假设的重复,但由于没有答案为我工作,我宁愿问另一个问题。OpenCV 3.1.0不能用CMake编译

我的项目将无法通过CMake编译:

发现包配置文件:/usr/share/OpenCV/OpenCVConfig.cmake但其设置OpenCV_FOUND为false,以便包“的OpenCV”被认为是不找到。

我的CMakeLists.txt如下:就行find_package(OpenCV的REQUIRED)发生

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}) 

错误,从而没有下面的消息被显示无论如何。

但在编译时在控制台,用命令:

g++ -o prog -std=c++11 `pkg-config --libs --cflags opencv` prog.cpp 

编制情况没有问题,程序可以发动完美的罚款。

“pkg配置--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配置--cflags OpenCV的” 简单地给我(CMAKE_INSTALL_PREFIX被设定为/ usr):

-I/USR /包含/ OpenCV的

如果有人有解决方案,我很乐意接受。

回答

3

好吧,我想通了。太糟糕了,我一直坚持这一点。我正在使用CLion,所以解决方案可能会有所不同,但您只需要删除缓存并重新加载项目(我个人去了Tools> CMake> Delete cache and Reload project)。

如果命令行工作,而CMake不,我想这是你所要做的。

我希望它最终能够帮助别人谁会有这样一个愚蠢的错误。