| 原作者 | ジェームズ・ヘンストリッジ;ハボック・ペニントンによって書き直された |
|---|---|
| 開発者 | トーレフ・フォグ・ヒーン / freedesktop.org |
| 初回リリース | 2000年またはそれ以前 |
| 安定版リリース | 0.29.2 / 2017年3月20日 |
| リポジトリ | gitlab.freedesktop.org/pkg-config/pkg-config |
| 書かれた | C |
| オペレーティング·システム | Unixライク |
| タイプ | プログラミングツール |
| ライセンス | GNU GPL |
| Webサイト | www.freedesktop.org/wiki/Software/pkg-config/ |
pkg-configは、ローカルのファイルベースのデータベースからライブラリに関する情報を照会し、それらに依存するコードベースを構築するソフトウェア開発ツールです。コードベースの外部に保存されているがコードベースによって参照されているホスト固有のライブラリ情報を使用することで、クロスプラットフォームでコードベースを共有できます。この間接性により、コードベースにホスト固有のライブラリ情報をエンコードすることなく、ホスト上でコードベースを構築できます。
ツールはコマンドラインインターフェース(CLI) を介して呼び出され、標準出力を介してライブラリ情報を報告します。バージョン情報などの一部の情報は、プログラマーにとってより有用です。コマンドラインオプション (フラグ)などのその他の情報は、コンパイラーやリンカーなどのツールをビルドする場合により有用です。
このツールはもともとLinux向けに設計されましたが、現在はBSD、Windows、macOS、Solarisでも利用できます。最初の実装はシェルスクリプトで書かれていました。[1]その後、 GLibを活用して C で書き直されました。[2]
データベース
ツールを使用できるようにするには、参照されるライブラリに対応するファイルが、その目的のために指定されたファイル システムの場所 (場所はシステムによって異なります) に保存されている必要があります。このファイルは、 RPM、deb.pc 、またはその他のパッケージ システムによって処理されるインストール プロセスの一部として、またはソース コードからコンパイルすることによって保存する必要があります。
ファイルには、ヘッダー ファイル.pc、ライブラリ バイナリの場所、さまざまな説明情報などのさまざまな情報が含まれています。また、ライブラリを使用するプログラムが使用する必要がある依存ライブラリのリストも含まれる場合があります。
例
次のサンプルファイルは、 libpng.pcの情報を定義します。ファイルの残りの部分で使用される変数の定義から始まります。名前「libpng」やバージョン「1.2.8」などの説明情報が含まれています。エントリは、 C プリプロセッサが内のライブラリのヘッダー ファイルを見つけるために使用するオプションを定義します。エントリは、ライブラリ バイナリの場所を定義し、リンクするライブラリ バイナリ ファイルを識別するオプションを定義します。
Cflags/usr/local/include/libpng12Libs/usr/local/lib
prefix = /usr/local
exec_prefix = ${ prefix }
libdir = ${ exec_prefix } /lib
Includedir = ${ exec_prefix } /include
名前: libpng
説明: PNGファイルの
読み込みと保存バージョン: 1.2.8
ライブラリ: -L ${ libdir } -lpng12 -lz
Cflags : -I ${ Includedir } /libpng12
以下は、このファイルを使用してgccにオプションを指定するビルド コマンドの例です。コマンドの出力は、pkg-config --libs --cflags libpngコマンド ライン インターフェイスを介して gcc に渡されます。
$ gcc -oテストtest.c $( pkg-config --libs --cflags libpng )
代替実装
pkg-config の注目すべきバリエーション:
- pkgconf – GLibへの依存を排除するために書き直した。Alpine Linux、[3]、 Arch Linux、[4] 、 CentOS 8+、[3]、 Fedora、[4]、 FreeBSD、[4]、 Mageia 7+、[3]、 Manjaro [3]、NetBSD [4]ではpkg-configの代わりにデフォルトとなる。
- u-config – 最高クラスの Windows サポート
- PkgConfig – Perlで記述
- ruby-gnome/pkg-config – Rubyで書かれています
参考文献
- ^ Havoc Pennington (2000 年 6 月 4 日). 「Re: the *-config scripts」 . 2020 年 1 月 22 日閲覧。
- ^ Havoc Pennington (2000年7月23日). 「pkg-config」 . 2020年1月22日閲覧。
- ^ abcd は pkgconf の拡散で見つかったが、repology の pkg-config の拡散では見つからなかった
- ^ abcd https://lists.archlinux.org/pipermail/arch-dev-public/2018-May/029252.html pkg-config を pkgconf に置き換える] arch-dev-public@lists.archlinux.org
