pkg-config可以为你提供一些依赖,如头文件,还有库文件。他原来是为Linux而设计的,目前在windows、Mac OS 也普遍应用。
用法为:
gcc/g++ test.c/test.cpp `pkg-config --cflags --libs opencv`
也可以多个一起使用如:opencv与SDL一起
gcc/g++ test.c/test.cpp `pkg-config --cflags --libs opencv sdl2`
需要注意⚠️`是tab键上面的点,而不是与双引号一起的那个’。
pkg-config的使用是需要扩展名为.pc的文件支持的,例如opencv的就是opencv.pc,sdl2的就是sdl2.pc。在MacOS系统中,这些文件一般存放在/usr/local/lib/pkgconfig或者 /usr/lib/pkgconfig/。这个路径用系统变量PKG_CONFIG_PATH指定,通过命令cat $PKG_CONFIG_PATH,我们可以知道他所指向的路径。
那么*.pc文件里面又是些什么呢?以sdl.pc为例子,我们看一下:
# sdl pkg-config source file
prefix=/usr/local
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include
Name: sdl2
Description: Simple DirectMedia Layer is a cross-platform multimedia library designed to provide low level access to audio, keyboard, mouse, joystick, 3D hardware via OpenGL, and 2D video framebuffer.
Version: 2.0.4
Requires:
Conflicts:
Libs: -L${libdir} -lSDL2
Libs.private: -lSDL2 -lm -liconv -Wl,-framework,ForceFeedback -lobjc -Wl,-framework,CoreVideo -Wl,-framework,Cocoa -Wl,-framework,Carbon -Wl,-framework,IOKit -Wl,-framework,CoreAudio -Wl,-framework,AudioToolbox -Wl,-framework,AudioUnit
Cflags: -I${includedir}/SDL2 -D_THREAD_SAFE
运行:
pkg-config –cflags –libs sdl2
输出为:
-D_THREAD_SAFE -I/usr/local/include/SDL2 -L/usr/local/lib -lSDL2
实际上就是,提供我们编译代码的时候需要的一些信息。