Windows下使用cmake configure opencv-2.4.13.6遇到的一个问题及其解决

今天用cmake-gui配置opencv-2.4.13.6时,遇到下面的警告打印:

CMake Warning at cmake/OpenCVPackaging.cmake:23 (message):
CPACK_PACKAGE_VERSION does not match version provided by version.hpp
header!
Call Stack (most recent call first):
CMakeLists.txt:1107 (include)

为了消除上面的警告,就要修改opencv源码根目录下的CMakeLists.txt文件。原来的部分内容如下:

if(GIT_EXECUTABLE)
  execute_process(COMMAND ${GIT_EXECUTABLE} describe --tags --always --dirty --match "2.[0-9].[0-9]*"
    WORKING_DIRECTORY "${OpenCV_SOURCE_DIR}"
    OUTPUT_VARIABLE OPENCV_VCSVERSION
    RESULT_VARIABLE GIT_RESULT
    ERROR_QUIET
    OUTPUT_STRIP_TRAILING_WHITESPACE
  )
  if(NOT GIT_RESULT EQUAL 0)
    set(OPENCV_VCSVERSION "unknown")
  endif()
else()
  # We don't have git:
  set(OPENCV_VCSVERSION "unknown")
endif()

修改成:

if(GIT_EXECUTABLE)
  execute_process(COMMAND ${GIT_EXECUTABLE} describe --tags --always --dirty --match "2.[0-9].[0-9]*"
    WORKING_DIRECTORY "${OpenCV_SOURCE_DIR}"
    OUTPUT_VARIABLE OPENCV_VCSVERSION
    RESULT_VARIABLE GIT_RESULT
    ERROR_QUIET
    OUTPUT_STRIP_TRAILING_WHITESPACE
  )
  if(NOT GIT_RESULT EQUAL 0)
    #set(OPENCV_VCSVERSION "unknown")
    set(OPENCV_VCSVERSION "2.4.13.6")
  endif()
else()
  # We don't have git:
  #set(OPENCV_VCSVERSION "unknown")
  set(OPENCV_VCSVERSION "2.4.13.6")
endif()

这样就可以了。

这部分代码首先通过GIT_EXECUTABLE判断系统有没有安装git,如果安装了就尝试获得OPENCV_VCSVERSION,有时候即使安装了git也可能会有GIT_RESULT为0的返回,所以要在两处分别设置OPENCV_VCSVERSION变量的值,这个值在cmake/OpenCVPackaging.cmake中用到,把它设为OPENCV_VERSION变量相同的值就不会打印警告了。

顺便补充一下cmake基础知识:

打log,使用message,比如message("hello cmake!")

变量定义,使用set,比如set(NEW_VAR "123")

引用变量时,通过${NEW_VAR},变量必须在花扩号内。比如message(${NEW_VAR})就打印出变量的值。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值