Windows下的Qt配置pkg-config環境的解決方案!

【前言】
    我們都知道在Linux系統下配置完opencv環境後,Qt直接按照以下方式就可以直接調用了!這裏我們採用的編譯器是mingw32-make!
CONFIG += link_pkgconfig
PKGCONFIG += opencv 
    但在windows下面,要麼在VS下配置include和lib目錄,針對Qt Creator下的多數採用下面的方案:
INCLUDEPATH += D:\opencv\build\include

LIBS += D:\opencv-build\bin\libopencv_core320.dll
LIBS += D:\opencv-build\bin\libopencv_highgui320.dll
LIBS += D:\opencv-build\bin\libopencv_imgcodecs320.dll
LIBS += D:\opencv-build\bin\libopencv_imgproc320.dll
LIBS += D:\opencv-build\bin\libopencv_features2d320.dll
LIBS += D:\opencv-build\bin\libopencv_calib3d320.dll
    如果只使用opencv或許沒啥問題,但是往往我們還需要其它第三方的c++庫,這時採用這樣的方式,工程管理上比較混亂!隨無傷大雅,但總覺得彆扭!

針對這樣的情況,我們往往採用兩種方案,分別爲Cmake和pkg-config這兩種!CMake的確很優秀,但不自動管理Qt自己的內部庫,相當於Qt庫和第三方庫一視同仁,都需要自己配置,這就尷尬了!一般比較複雜且需要跨平臺部署的工程才建議使用cmake,平時也沒必要自己折騰自己了!

於是下面討論是pkg-config的方案!
On http://sourceforge.net/p/mingw/mailman/message/31908633/ there are some instructions from earlier this year:
The FAQ pkg-config information did not work for me: these did:https://github.com/texane/stlink/issues/169
Download these three glib, pkg-config, pkg-config-dev archives and extract contents to C:\MinGW
I keep this unaccepted in case someone has a better answer.
最新的pkg-config是0.29的版本,這裏是0.28的!pkg-config這個工具比較穩定了,更新頻次比較少!0.28與0.29的區別不大,使用是沒有問題的!

下載上面的三個工具,分別爲glib,pkg-config,pkg-config-dev。將其放置到mingw的安裝目錄中!這裏我使用的是Qt自帶的mingw,你可以完全像我這樣設置!

將其分別解壓,目錄結構分別爲




將他們目錄下文件夾分別拷貝到mingw的安裝目錄!

在lib目錄下創建一個pkgconfig,用於放置opencv.pc文檔!

我們最好再設置一下PKG_CONFIG_PATH


現在我們需要找到opencv.pc,將其複製過來並編輯配置一下!

將其拷貝到剛纔的PKG_CONFIG_PATH所對應的目錄下!
需要注意的是這個opencv.pc文檔在widnows下需要修改一下,否則不好使用!
原本的opencv.pc的內容如下
# Package Information for pkg-config

prefix=D:/OpenCV/build/install
exec_prefix=${prefix}
libdir=${exec_prefix}/x86/mingw/lib
includedir_old=${prefix}/include/opencv
includedir_new=${prefix}/include

Name: OpenCV
Description: Open Source Computer Vision Library
Version: 3.3.1
Libs: -L${exec_prefix}/x86/mingw/lib -llibopencv_dnn331d.dll -llibopencv_ml331d.dll -llibopencv_objdetect331d.dll -llibopencv_shape331d.dll -llibopencv_stitching331d.dll -llibopencv_superres331d.dll -llibopencv_videostab331d.dll -llibopencv_calib3d331d.dll -llibopencv_features2d331d.dll -llibopencv_highgui331d.dll -llibopencv_videoio331d.dll -llibopencv_imgcodecs331d.dll -llibopencv_video331d.dll -llibopencv_photo331d.dll -llibopencv_imgproc331d.dll -llibopencv_flann331d.dll -llibopencv_core331d.dll
Libs.private: -lopengl32 -lglu32
Cflags: -I${includedir_old} -I${includedir_new}


這裏我們可以看到上面有prefix,exec_prefix這樣的變量,在windows下的pkg-config是無視他們的,都是默認到mingw的安裝目錄,因此我們需要改爲絕對路徑!這裏設定你自己的目錄就可以了!
# Package Information for pkg-config

libdir=D:/OpenCV/build/install/x86/mingw/lib
includedir_old=D:/OpenCV/build/install/include/opencv
includedir_new=D:/OpenCV/build/install/include

Name: OpenCV
Description: Open Source Computer Vision Library
Version: 3.3.1
Libs: -LD:/OpenCV/build/install/x86/mingw/lib -llibopencv_dnn331d.dll -llibopencv_ml331d.dll -llibopencv_objdetect331d.dll -llibopencv_shape331d.dll -llibopencv_stitching331d.dll -llibopencv_superres331d.dll -llibopencv_videostab331d.dll -llibopencv_calib3d331d.dll -llibopencv_features2d331d.dll -llibopencv_highgui331d.dll -llibopencv_videoio331d.dll -llibopencv_imgcodecs331d.dll -llibopencv_video331d.dll -llibopencv_photo331d.dll -llibopencv_imgproc331d.dll -llibopencv_flann331d.dll -llibopencv_core331d.dll
Libs.private: -lopengl32 -lglu32
Cflags: -I${includedir_old} -I${includedir_new}


好了,pkg-config環境配置都完成了!

pro工程目錄下添加
CONFIG += link_pkgconfig
PKGCONFIG += opencv 
就可以構建使用了!

這樣我們就可以擁抱qmake了,無需需要cmake就可以開開心心的添加第三方庫了!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章