在Windows上使用CMake配置OpenCV项目时出错

时间:2015-08-11 00:39:34

标签: opencv cmake

我使用了预构建的OpenCV 3.0.0版本。它在我直接创建Visual Studio项目时以及添加include和library目录时都有效。

现在我正在创建一个CMakeList.txt文件(这样我就可以在不同的系统上运行相同的代码)。它将用于在Windows上创建Visual Studio项目,在Unix上创建Makefile等。

cmake_minimum_required(VERSION 2.8)
project( Facade )
find_package( OpenCV REQUIRED )
add_executable( Facade grammar.cpp )
target_link_libraries( Facade ${OpenCV_LIBS} )

当我在Windows上生成Visual Studio文件时,出现以下错误:

CMake Warning at C:/opencv/build/OpenCVConfig.cmake:166 (message):
  Found OpenCV Windows Pack but it has no binaries compatible with your
  configuration.

  You should manually point CMake variable OpenCV_DIR to your build of OpenCV
  library.
Call Stack (most recent call first):
  CMakeLists.txt:3 (find_package)


CMake Error at CMakeLists.txt:3 (find_package):
  Found package configuration file:

    C:/opencv/build/OpenCVConfig.cmake

  but it set OpenCV_FOUND to FALSE so package "OpenCV" is considered to be
  NOT FOUND.

目前,OpenCV_DIR是C:\ opencv \ build,它包含CMake文件。如果我将OpenCV_DIR指向C:\ opencv \ build \ x64 \ vc12,它说,找不到CMake文件。

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

您使用哪个生成器字符串进行CMake配置步骤?对于VC12 x64,您需要使用-G "Visual Studio 12 Win64"(如果您使用的是CMake 3,则使用-G "Visual Studio 12 2013 Win64")。请注意,您需要在末尾包含Win64才能获得x64平台。

OpenCV CMake配置脚本检查以确保您使用x64二进制文件是相当方便的。您将CMake配置为构建32位二进制文​​件,如果您能够构建可执行文件,则会导致运行时错误。

答案 1 :(得分:0)

以防万一其他人遇到此问题,我是通过使用旧的CMake配置脚本来解决的。安装VS2017后,我遇到了这个错误-事实是一些自动生成的CMAKE配置具有以下内容:

elseif(MSVC_VERSION EQUAL 1910)
    set(OpenCV_RUNTIME vc15)

我检查了MSVC_VERSION,那是1916年,仍然是VC15,但是文件错误地错过了它。我改为:

elseif((MSVC_VERSION EQUAL 1910) OR (MSVC_VERSION GREATER 1910))
    set(OpenCV_RUNTIME vc15)

它就像一种魅力。