以opencv爲例,經過源碼的方式生成庫時會產生一個opencv.pc的文件,該文件是提供給pkg-config使用的。c++
pkg-config默認會從/usr/lib/pkgconfig/ 目錄下查找*.pc文件,從該文件中獲取對應庫的信息。shell
假設我電腦上安裝了相同的庫不一樣的版本,好比opencv,一個版本爲3.3.1,另外一個是3.4.3,則重命令opencv.pc分別爲opencv331.pc和opencv343.pc並放置到/usr/lib/pkgconfig/目錄下。bash
如下兩句分別查看不一樣opencv的庫信息, --cflag對應的是頭文件路徑 --libs對應的庫名稱。c++11
pkg-config --cflags --lib opencv343 pkg-config --cflags --lib opencv313
一般在編寫Makefile能夠使用pkg-config減小工做量:code
#ROOT=$(shell pwd) ROOT=. CFLAGS=-Wall -g -std=c++11 `pkg-config --cflags --libs opencv realsense2` CC=g++ TARGET=vision SRCS=$(shell ls $(ROOT)/*.cpp) OBJS = $(SRCS:.cpp=.o) $(TARGET):$(OBJS) @$(CC) -o $@ $^ $(CFLAGS) %.o:%.c $(CC) $(CFLAGS) -o $@ -c $< clean: @rm -rf $(TARGET) $(OBJS)