C++ CMake没有找到明显存在的包

C++ CMake没有找到明显存在的包,c++,opencv,cmake,qt-creator,C++,Opencv,Cmake,Qt Creator,我试图通过qtcreator中的cmake构建一个项目,但在外部包依赖性方面遇到了问题。 有几个软件包找不到,但我将实际文件位置的符号链接添加到cmake正在查找的目录中,这是一个他们工作正常的ETR。 但是,这个库libopencv_viz.so.3.2.0与我不合作。我添加了符号链接并直观地验证了文件/链接是否位于正确位置,但cmake仍然告诉我它找不到文件,我不知道如何解决这个问题。正如我在之前的帖子中所说的,我现在还在学习cmake,所以我完全不知道为什么它不能找到一个在正确位置的可验证

我试图通过qtcreator中的cmake构建一个项目,但在外部包依赖性方面遇到了问题。 有几个软件包找不到,但我将实际文件位置的符号链接添加到cmake正在查找的目录中,这是一个他们工作正常的ETR。 但是,这个库libopencv_viz.so.3.2.0与我不合作。我添加了符号链接并直观地验证了文件/链接是否位于正确位置,但cmake仍然告诉我它找不到文件,我不知道如何解决这个问题。正如我在之前的帖子中所说的,我现在还在学习cmake,所以我完全不知道为什么它不能找到一个在正确位置的可验证的包

CMake错误位于/usr/share/OpenCV/OpenCVModules。CMake:192(消息): 导入的目标“opencv_viz”引用该文件

但此文件不存在。可能的原因包括:

  • 文件已被删除、重命名或移动到其他位置

  • 安装或卸载过程未成功完成

  • 安装程序包有故障,并且已被包含

    “/usr/share/OpenCV/OpenCVModules.cmake”

但不是它引用的所有文件


手动创建符号链接表示安装不完整。清理您的手动符号链接,并找出安装中的问题

在Linux上,具有完整数字版本的
.so.x.y.z
是运行库,这是正常的。即运行应用程序所需的文件。版本号可确保应用程序加载与生成它所依据的库相同的库

.so
.so.x.y.z
的符号链接用于构建链。当编译器(linker,真的)去链接libopencv_-viz时,它将搜索
libopencv_-viz.so
,将符号链接解析为版本化文件,并链接该文件


许多发行版(包括Ubuntu)将运行库与开发组件分开。我猜您已经安装了名为
libopencv-viz3.2
的软件包,但没有安装名为
libopencv-viz-dev

的软件包,请检查权限、文件类型等。您的屏幕截图显示了
libopencv\u video.so.3.2.0
作为链接,但是
libopencv_viz.so.3.2.0
not.File权限与我创建的所有其他符号链接完全相同。我在链接上运行了“文件”,它说它们是断开的符号链接。什么会导致符号链接在创建后立即中断?我使用apt安装lib,它显然从libopencv_viz.so创建了到libopencv_viz.so.3.2的硬符号链接,但它指向的文件不在那里。显然这就是为什么我的libopencv_viz.3.2.0->libopencv_viz.So的符号链接失败的原因。但是为什么在安装之后,当我在安装过程中没有出现错误时,会立即出现初始断开的链接呢?
 "/usr/lib/x86_64-linux-gnu/libopencv_viz.so.3.2.0"