Quantcast
Channel: Sam的技术Blog
Viewing all articles
Browse latest Browse all 158

OpenCV for Linux 编译中遇到的几个问题

$
0
0
作者:Sam (甄峰)  sam_code@hotmail.com

这几天需要编译Linux下几个特定版本(2.4.13)的OpenCV库。OpenCV各版本库已经编译多次,本想这是非常容易的事情了,可没想到竟然遇到一些问题。先把最后找到的经典方法记录如下:


0. Download OpenCV:
先使用:git clone https://github.com/opencv/opencv.git

#git branch -a 
master 
remotes/origin/2.4
remotes/origin/master
当前的分支是master.

#git describe
3.3.0-56-g89172c0
是3.3版本。但Sam需要2.4.xx版本。

切换:
#git checkout 2.4
#git describe
2.4.13-4-gf7d99f3

好,这个版本可以用了。

1. 编译:
先进入编译脚本目录:
cd platforms/scripts/
但里面没有i686版本脚本。所以Sam干脆增加一个脚本。仿照其它编译脚本。

cmake_linux_i686.sh

#!/bin/sh
cd `dirname $0`/..

mkdir -p build_linux_i686
cd build_linux_i686

cmake -DCMAKE_BUILD_WITH_INSTALL_RPATH=ON -DBUILD_EXAMPLES=1 -DCMAKE_TOOLCHAIN_FILE=../linux/gnu.toolchain.cmake  $@ ../..


$cd platforms
$sh scripts/cmake_linux_i686.sh
$cd build_linux_i686
$make

编译完成。

下面再说说遇到的问题。



3. 第一次尝试中遇到的问题及解决方法
3.1: 下载:
http://www.opencv.org/releases.html
下载了opencv-2.4.13-3.zip
同样在platforms/scripts/ 下建立了cmake_linux_i686.sh
$cd platforms
$sh scripts/cmake_linux_i686.sh

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:1106 (include)


分析:
查看cmake/OpenCVPackaging.cmake 23行内容:
  if (NOT "${OPENCV_VCSVERSION}" MATCHES "^${OPENCV_VERSION}.*")
    message(WARNING "CPACK_PACKAGE_VERSION does not match version provided by version.hpp header!")
  endif()

OPENCV_VCSVERSION是哪里来的呢? 查到是在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()

这段脚本告诉要使用git describe 得到版本。可想而知,OpenCV这次是zip形式download的。肯定没有.git文件。 所以OPENCV_VCSVERSION没有信息。 
所以Sam在这里加上:
set(OPENCV_VCSVERSION "2.4.13")
就可以正常了。

但实际做完发现,其实就是个Warring,不用理都没事。呵呵。



 

Viewing all articles
Browse latest Browse all 158

Trending Articles