pkg-config的原理是:每个由pkg-config管理的库都会提供一个后缀为.pc的文件,pkg-config不过是把这个文件读出,分析并打印在屏幕上罢了。
比如opencv的pc文件(opencv.pc):
#
Package Information for
pkg-config
prefix =/ usr / local
exec_prefix =$ {prefix}
libdir =$ {exec_prefix} / lib
includedir_old =$ {prefix} / include / opencv
includedir_new =$ {prefix} / include
Name: OpenCV
Description: Open Source Computer Vision Library
Version: 2.2 . 0
Libs: -L $ {libdir} -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_ml -lopencv_video -lopencv_features2d -lopencv_calib3d -lopencv_objdetect -lopencv_contrib -lopencv_legacy -lopencv_flann
Cflags: -I $ {includedir_old} -I $ {includedir_new}
prefix =/ usr / local
exec_prefix =$ {prefix}
libdir =$ {exec_prefix} / lib
includedir_old =$ {prefix} / include / opencv
includedir_new =$ {prefix} / include
Name: OpenCV
Description: Open Source Computer Vision Library
Version: 2.2 . 0
Libs: -L $ {libdir} -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_ml -lopencv_video -lopencv_features2d -lopencv_calib3d -lopencv_objdetect -lopencv_contrib -lopencv_legacy -lopencv_flann
Cflags: -I $ {includedir_old} -I $ {includedir_new}
如果pkg-config找不到某个库的路径,需要做的就是找到该库的pc文件,然后拷到pkg-config指定的路径下就行了。pc文件一般在编译时会生成,pkg-config指定的路径,在osx下如果是用macports安装的pkg-config,则会在/opt/local/lib/pkgconfig。