自動識別OpenCV版本並新增依賴庫

2021-07-25 17:10:08 字數 1741 閱讀 5384

這裡給大家介紹一種在標頭檔案中自動判斷識別opencv的版本號,並據此新增對應的依賴庫(.lib檔案)的方法。具體**如下:

#ifndef _predep_h_

#define _predep_h_

#pragma once

#include "targetver.h"

#include

#include

#include

#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

opencvdir,然後在visual studio的專案屬性vc++目錄中設定include目錄和library目錄為 $(opencvdir)/include和$(opencvdir)/lib。這樣以後公升級opencv時,只需在系統環境變數中修改opencvdir的路徑,就不需要修改專案**和編譯器設定了。

**:

自動識別OpenCV版本並新增依賴庫

這裡給大家介紹一種在標頭檔案中自動判斷識別opencv的版本號,並據此新增對應的依賴庫 lib檔案 的方法。具體 如下 ifndef predep h define predep h pragma once include targetver.h include include include in...

自動識別pc端 移動端,並跳轉

1.1 pc端 和 移動端 分開 各是乙個單頁應用,或各有一套 直接在 pc端的首頁 index.html 的 head 裡加入識別 window.location.replace mobile url.html 1.2 pc端 和 移動端 在乙個單頁系統裡 使用路由 pc端和移動端兩套樣式在vue...

vim自動識別檔案編碼

1.檢視檔案編碼的方法 file filename 在vim中可以直接檢視檔案編碼方式 set fileencoding 即可顯示檔案編碼方式 2.設定vim使其自動識別檔案編碼 set encoding utf 8 fileencodings ucs bom,utf 8,cp936 這樣,就可以讓...