【Ubuntu】ライブラリをpkg-configで管理する


Ubuntu18.04にinstallしたライブラリをg++でコンパイルする際にパスを通すのが面倒だったのでpkg-configで管理する

Ubuntuの端末でpkg-configを実行した際、/usr/lib/pkgconfig/usr/share/pkgconfig内部にある.pcファイルを順番に実行していく。.pcファイルにはライブラリのパス情報などが記述されている。これ以外のディレクトリを走査して欲しい場合は、$PKG_CONFIG_PATHにパスを通す。なのでこれのいずれかのディレクトリに.pcファイルを作成する

.pcの書き方

mylib.pc
prefix=/home/path-to-your-library
exec_prefix=${prefix}
includedir=${prefix}/include
libdir=${exec_prefix}/lib

Name: mylib
Description: my library
Version: 1.0.0
Cflags: -I${includedir}/mylib
Libs: -L${libdir} -lmylib

Name: pkg-configを実行する際に渡すライブラリ名
Description: ライブラリの説明
URL: ライブラリを公開している場合、利用者向けのURL
Version: ライブラリのバージョン
Requires: ライブラリを利用するために必要なパッケージ一覧
Requires.private: ライブラリを利用するために必要なプライベートパッケージ一覧
Conflicts: 競合情報
Cflags: ライブラリのincludeパス
Libs: ライブラリのlibパス
Libs.private: ライブラリのプライベートlibパス

■実行

pkg-config --cflags --libs mylib

 
参考:
Guide to pkg-config
https://people.freedesktop.org/~dbn/pkg-config-guide.html
PKG_CONFIG_PATH environment variable
https://askubuntu.com/questions/210210/pkg-config-path-environment-variable