今天用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})就打印出变量的值。