pkg-config 用法简介

pkg-config 用法简介

当我们写代码时,经常会调用第三方的库。这些第三方的库的安装路径在每台电脑上可能都会不同。所以如果我们把这些库的路径写死,那么别人拿到我们的代码编译时就会遇到各种问题。为了解决这个问题,就有了 pkg-config。这里要多说一句 pkg-config 是个 linux 下的工具,在 windows 下虽然也能用,但是用的人很少。

简单的说 pkg-config 维护了一个保存各个代码库的路径的数据库。当然这个”数据库” 非常的简单,其实就是一个特殊的目录,这个目录中有一系列的以 “.pc” 为后缀的文件。

比如我的电脑里安装了 MSYS2。 在 msys2 上安装了 mingw64 的 pkg-config。 那么这些 “.pc” 文件就都在 “msys64\mingw64\lib\pkgconfig” 这个目录下。

我们可以打开一个 “.pc” 文件来看看。比如 lib.pc 文件。

prefix=/mingw64
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
sharedlibdir=${exec_prefix}/bin
includedir=${prefix}/include

Name: zlib
Description: zlib compression library
Version: 1.2.11

Requires:
Libs: -L${libdir} -lz
Cflags: -I${includedir}

内容很简单,最后两行是关键信息,告诉我们应该如何包含这个库。

我们应该如何使用这个 pkg-config 呢。

pkg-config 有两个最常用的命令行选项,分别是 “–libs” 和 “–cflags” ,我们可以分别执行一下。

$ pkg-config.exe --cflags zlib
-ID:/msys64/mingw64/include

$ pkg-config.exe --libs zlib
-LD:/msys64/mingw64/lib -lz

看到这里,如何使用 pkg-config 就一目了然了。比如下面的命令行,其中 pkg-config --cflags --libs zlib 自动被替换为 “-ID:/msys64/mingw64/include -LD:/msys64/mingw64/lib -lz
”。

$gcc main.c `pkg-config --cflags --libs zlib` -o main

当然通常我们会将 pkg-config 放到 makefile 中。如果使用 qt,可以在 pro 文件中这样写:

CONFIG += link_pkgconfig
PKGCONFIG += zlib

你可能感兴趣的:(编程杂项)