一點(diǎn)補(bǔ)充投蝉,關(guān)于PKG-CONFIG的使用
pkg-config本身是一個(gè)linux下的命令,其功能是用于獲得某一個(gè)庫/模塊的所有編譯相關(guān)的信息养葵。
本篇blog將教大家在windows上面配置pkg-config,使其自動(dòng)搜索opencv頭文件和庫文件目錄瘩缆,并且傳給g++進(jìn)行鏈接关拒。以后鏈接就不需要總是輸入目錄進(jìn)行鏈接了。
首先庸娱,我們?nèi)ハ螺dwindows下的pkg-config着绊。
鏈接: https://pan.baidu.com/s/1Y47Bb4imHyYRNEeO1frTXA 提取碼: m854
將下載的PKG-CONFIG解壓,解壓的bin
與MinGW-w64
里的的bin目錄合并熟尉。將libglib-2.0-0.dll
復(fù)制到 MinGW-w64
里bin
目錄下归露。
完成這步后進(jìn)入cmd/Powershell,輸入pkg-config
,如果出現(xiàn)一長串英文代表環(huán)境變量配置正確斤儿,英文的大概意思是沒有在PKG_CONFIG_PATH
中讀取到配置文件剧包,需要我們?cè)O(shè)置環(huán)境變量。所以我們下一步要做的是編寫配置文件往果。如果出現(xiàn)'pkg-config'不是內(nèi)部或外部命令疆液,也不是可運(yùn)行的程序或批處理文件。就請(qǐng)檢查環(huán)境變量里的PATH設(shè)置是否正確了陕贮。
打開Visual Studio Code堕油,新建一個(gè)文件opencv.pc
,內(nèi)容請(qǐng)根據(jù)自己的目錄進(jìn)行更改。
opencv.pc
# Package Information for pkg-config
prefix=E:/Opencv345
exec_prefix=${prefix}
libdir=${exec_prefix}/x64/mingw/lib
includedir_old=${prefix}/include/opencv
includedir_new=${prefix}/include
Name: OpenCV
Description: Open Source Computer Vision Library
Version: 3.4.5
Libs: -L${exec_prefix}/x64/mingw/lib -lopencv_world
Libs.private: -ldl -lm -lpthread -lrt
Cflags: -I${includedir_old} -I${includedir_new}
說明:
-
prefix
:在=
后面加上opencv的安裝目錄馍迄。 -
Version
:請(qǐng)根據(jù)個(gè)人的版本進(jìn)行更改福也。
保存opencv.pc至MinGW-w64
的bin
目錄下,打開環(huán)境變量設(shè)置攀圈,在系統(tǒng)環(huán)境變量下點(diǎn)擊新建,在變量名處輸入PKG_CONFIG_PATH
峦甩,在變量值處輸入MinGW-w64
下的bin
目錄路徑赘来。
重新打開終端,輸入pkg-config --cflags --libs opencv
凯傲,如果正確輸出了opencv的頭文件和庫文件以及附加鏈接庫則設(shè)置正確犬辰,如下圖:
我們可以使用之前的main.cpp
做個(gè)測試。
進(jìn)入終端冰单,輸入g++ main.cpp -o main `pkg-config --cflags --libs opencv`
幌缝,注意是數(shù)字1旁邊的那個(gè)`
。但是這兒說下博主在cmd/powershell下面輸入這條命令失敗了诫欠。
主要是:
cmd/powershell不識(shí)別這個(gè)
涵卵,哭了。 于是博主換了Cygwin荒叼,在cmd輸入```bash```進(jìn)入了Shell轿偎,再次輸入這個(gè)命令編譯成功。PS:Cygwin/Msys2網(wǎng)上配置教程一大堆被廓,沒有Linux基礎(chǔ)的可以考慮Cygwin坏晦,有Linux基礎(chǔ)的應(yīng)該考慮使用Msys2,直接使用
pacman`進(jìn)行軟件包管理嫁乘。
為了解決平臺(tái)的問題昆婿,更推薦在跨平臺(tái)使用的時(shí)候使用CMake。參見下一篇CMAKE的補(bǔ)充