【问题标题】:OpenCV CLion (Cmake) linking issue - cmake reports a strange errorOpenCV CLion (Cmake) 链接问题 - cmake 报告一个奇怪的错误
【发布时间】:2015-12-01 03:38:48
【问题描述】:

由于在保存我的 CMakeLists 和/或构建项目时出现奇怪错误,我无法让我的 CLion 构建项目: Error:Found package configuration file: /usr/share/opencv/OpenCVConfig.cmake but it set OpenCV_FOUND to FALSE so package "OpenCV" is considered to be NOT FOUND.

源文件

#include <stdio.h>
#include <opencv2/opencv.hpp>

using namespace cv;

int main(int argc, char** argv )
{
    Mat image;
    image = imread( "lena.jpg", 1 );
    if ( !image.data )
    {
        printf("No image data \n");
        return -1;
    }
    namedWindow("Display Image", WINDOW_AUTOSIZE );
    imshow("Display Image", image);
    waitKey(0);
    return 0;
}

我的CMakeLists.txt cmake_minimum_required(VERSION 3.3) project(Test) find_package( OpenCV REQUIRED ) add_executable( Test main.cpp ) target_link_libraries( Test ${OpenCV_LIBS} )

$ pkg-config --cflags opencv -I/usr/include/opencv

$ pkg-config --libs opencv -L/lib64 -lopencv_calib3d -lopencv_contrib -lopencv_core -lopencv_features2d -lopencv_flann -lopencv_gpu -lopencv_highgui -lopencv_imgproc -lopencv_legacy -lopencv_ml -lopencv_nonfree -lopencv_objdetect -lopencv_ocl -lopencv_photo -lopencv_stitching -lopencv_superres -lopencv_ts -lopencv_video -lopencv_videostab -ltbb -lGL -lGLU -lrt -lpthread -lm -ldl

事实是,当我从控制台手动 cmake . &amp; make(使用所有相同的 CMakeLists 文件)我的项目时,它工作得很好,没有错误

OpenCV 版本:2.4.11-1 (arch linux) CLion:最新。

OpenCVConfig.cmake 与 git 版本相比的差异:https://www.diffchecker。 com/vtmmiu1w

手动构建输出:

[dobegor@dobegor-pc Test]$ cmake .
-- The C compiler identification is GNU 5.2.0
-- The CXX compiler identification is GNU 5.2.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done
-- Generating done
-- Build files have been written to: /home/dobegor/ClionProjects/Test
[dobegor@dobegor-pc Test]$ make 
Scanning dependencies of target Test
[ 50%] Building CXX object CMakeFiles/Test.dir/main.cpp.o
[100%] Linking CXX executable Test
[100%] Built target Test

【问题讨论】:

  • 我卡住了,我尝试了几乎所有可能的方法。 SO上有一个类似的问题,但没有解决。
  • 手动构建项目时,您会in-source build(从源目录运行cmake),不是吗?它可能与 CLion 执行的 out-of-source 构建冲突。
  • @Tsyvarev 是的,但我不知道在源内和外源之间搜索 CMake 包有什么区别。
  • @Tsyvarev 和我尝试清理源代码构建的结果,只留下源文件和 CMakeLists,但 CLion 构建以同样的方式失败,并且源代码构建工作正常。这就是为什么我称之为怪异。
  • 可能,CLion 调用cmake 时带有一些附加参数。在您的(成功的)手动构建中,OpenCV_DIR 变量的值是多少?可以在CMakeCache.txt文件中找到。

标签: c++ opencv cmake clion


【解决方案1】:

我不知道到底发生了什么, 但我添加了一行手动将 OpenCV_FOUND 设置为 1 到 OpenCVConfig.cmake 中,一切正常:

set(OpenCV_FOUND 1)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-01-27
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 2017-04-22
    • 2010-12-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多