【问题标题】:CMAKE finds package but does not link librariesCMAKE 找到包但不链接库
【发布时间】:2016-06-08 11:35:45
【问题描述】:

我正在尝试使用 CMAKE 编译项目并使用 MinGW32-make.exe 进行制作。我的 CMakeLists.txt 看起来像这样:

#####################################
cmake_minimum_required (VERSION 3.0) 
project (TestProject)
find_package(OpenCV REQUIRED)
include_directories(${OPENCV_INCLUDE_DIR})
add_executable (main.exe main.cpp)
#####################################

运行 "CMAKE -G "MinGW Makefiles" 运行良好,但是当我尝试使用 "MinGW32-make.exe" 进行制作时,出现以下错误:

25:39: fatal error: opencv2/highgui/highgui.hpp: No such file or directory
 #include "opencv2/highgui/highgui.hpp"

当我查看 Makefile 时,我在任何地方都找不到文本“OpenCV”。应该在哪个文件中标识 OPENCV 目录?

【问题讨论】:

  • 它是 OpenCV_INCLUDE_DIRS 变量,其中包含带有 OpenCV 标头的目录。您应该使用它而不是 OPENCV_INCLUDE_DIR 来调用 include_directories()。您可以使用message() 命令输出变量的内容。请注意,该目录路径不必包含 OpenCV 子字符串。
  • 我听从了您的建议并使用了以下行:"message(STATUS"OPENCV DIRECTORY:" ${OpenCV_INCLUDE_DIRS}) 它返回了一个空值,与 _DIR 相同。当它发现包不应该它设置了这个变量?
  • 我又看了看,大写是让我绊倒的地方。它现在成功链接了 OpenCV 目录,谢谢!现在我从 OpenCV 使用的每个函数都会给出一个“未定义的引用”错误。我想我必须为我正在使用的每个单独的动态库使用“target_link_libraries”?

标签: c++ opencv cmake mingw mingw32


【解决方案1】:

您没有到达链接库,系统没有找到 opencv 标头,这是因为您的包含目录没有正确设置。

指定您的 OpenCV 构建目录位于您的 OpencvConfig.cmake 文件的位置非常重要。

此外,您还需要将库与 target_link_libraries 链接。

总之,你的 cmake 代码应该是这样的:

cmake_minimum_required (VERSION 3.0) 
project( TestProject )
find_package( OpenCV REQUIRED )
include_directories(${OpenCV_INCLUDE_DIRS})
add_executable( main main.cpp )
target_link_libraries( main ${OpenCV_LIBS} )

【讨论】:

  • 是的,你成功了。我已经做到了这一点,但是我的 target_link_libraries 中缺少“OpenCV_LIBS”变量。谢谢!
  • 但还有一个问题,cmake 如何知道最初在哪里寻找“OpencvConfig.cmake”文件?它只是在 PATH 变量中查找吗?
  • 如果你把Opencv构建目录作为环境变量放在你的路径中,cmake会自动找到它。但是,在其他情况下,您必须指定变量 OPENCV_DIR 这是您的 opencv 构建目录。
  • 这很奇怪,因为我有 OPENCV_DIR 和直接指向二进制文件夹的路径变量,而不是整个构建目录,所以这两个位置实际上都不包含 .cmake 文件,只有文件夹父级。我对此特别感兴趣,因为我既有预编译的库,也有自己编译的库,我想知道我正在使用哪一个。这两个库都包含各自的 OpencvConfig.cmake 文件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-03
  • 2012-09-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多