• OpenCV学习笔记(26)自动识别OpenCV版本并添加依赖库


    转自 http://blog.csdn.net/chenyusiyuan/article/details/8706177

    这里给大家介绍一种在头文件中自动判断识别OpenCV的版本号,并据此添加对应的依赖库(.lib文件)的方法。具体代码如下:

    #ifndef _PREDEP_H_
    #define _PREDEP_H_
    
    #pragma once
    #include "targetver.h"
    
    #include <stdio.h>
    #include <tchar.h>
    #include <iostream>
    #include "opencv2/core/version.hpp" #include "opencv2/imgproc/imgproc.hpp" #include "opencv2/highgui/highgui.hpp" #include "opencv2/calib3d/calib3d.hpp" #define CV_VERSION_ID CVAUX_STR(CV_MAJOR_VERSION) CVAUX_STR(CV_MINOR_VERSION) CVAUX_STR(CV_SUBMINOR_VERSION) #ifdef _DEBUG #define cvLIB(name) "opencv_" name CV_VERSION_ID "d" #else #define cvLIB(name) "opencv_" name CV_VERSION_ID #endif #pragma comment( lib, cvLIB("core") ) #pragma comment( lib, cvLIB("imgproc") ) #pragma comment( lib, cvLIB("highgui") ) #pragma comment( lib, cvLIB("flann") ) #pragma comment( lib, cvLIB("features2d") ) #pragma comment( lib, cvLIB("calib3d") ) #endif

    这里首先是通过OpenCV的version.hpp文件获取版本号,然后将CV_MAJOR_VERSION、CV_MINOR_VERSION、CV_SUBMINOR_VERSION三个版本号数字串接成一个字符串CV_VERSION_ID。然后,根据OpenCV的lib文件的命名规则和当前的编译环境(debug或release)来定义一个命名lib文件的宏 cvLIB。最后,通过 #pragma comment ( lib, * ) 指令来添加所需的依赖库。

    上面这种方法的便捷性在于,我们只需要指定依赖库的名称,通过所定义的宏就可以自动生成和添加与你所安装的OpenCV版本相对应的依赖库;并且将来升级OpenCV时,除非新版本的依赖库命名规则发生改变,否则就不需要再改动代码,程序会自动判断OpenCV的版本并找到对应的依赖库。

    这种方法是参考自 wxWidgets 的,更多的技巧可以参见 wxWidgets\include\msvc\wx\setup.h 和 wxWidgets\include\wx\version.h 。

    P.S.:另外,建议在系统环境变量中设置一个专门的项来存储OpenCV的安装路径,比如命名为 OPENCVDIR,然后在Visual Studio的项目属性VC++目录中设置include目录和library目录为 $(OPENCVDIR)/include和$(OPENCVDIR)/lib。这样以后升级OpenCV时,只需在系统环境变量中修改OPENCVDIR的路径,就不需要修改项目代码和编译器设置了。

  • 相关阅读:
    vs2017发布成功但是发布目录没有文件
    解决 CS0006 未能找到元数据文件
    EFPowertools 参数错误
    给WebAPI项目加上一个说明文档以及一个测试按钮
    Visual Studio 不显示SVN 状态图标解决方法
    JQuery PowerTimer 插件详解
    UML的各种关系理解
    C语言之如何上机运行第一个Hello World小程序
    打破 Serverless 落地边界,阿里云 SAE 发布 5 大新特性
    TCP/IP协议栈在Linux中内核中的运行时序分析
  • 原文地址:https://www.cnblogs.com/nsnow/p/2979331.html
Copyright © 2020-2023  润新知