OpenCV學習筆記(26)自動識別OpenCV版本並添加依賴庫

http://blog.csdn.net/chenyusiyuan/article/details/8706177#comments

這裏給大家介紹一種在頭文件中自動判斷識別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的路徑,就不需要修改項目代碼和編譯器設置了。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章