13,002
回編集
563行目: | 563行目: | ||
これにより、ビルド時にpkg-configツールが使用されて、指定した外部ライブラリの情報を取得することができる。<br> | これにより、ビルド時にpkg-configツールが使用されて、指定した外部ライブラリの情報を取得することができる。<br> | ||
<br> | <br> | ||
まず、pkg- | <u>まず、pkg-configツールを実行して、ライブラリファイルの存在を確認することが重要である。</u><br> | ||
pkg-config --libs --cflags <ライブラリ名> | pkg-config --libs --cflags <ライブラリ名> | ||
<br> | <br> | ||
==== 推奨される記述 ==== | |||
<syntaxhighlight lang="make"> | |||
# PKGCONFIG変数の設定 | # PKGCONFIG変数の設定 | ||
# | |||
# Pkg-configを使用する | |||
CONFIG += link_pkgconfig | |||
# 単一のライブラリを指定する場合 | |||
PKGCONFIG += <ライブラリ名> | PKGCONFIG += <ライブラリ名> | ||
# 例: Systemdライブラリを使用する場合 | |||
PKGCONFIG += libsystemd | |||
# 複数のライブラリを指定する場合 : | |||
# PKGCONFIG += <ライブラリ名 1> <ライブラリ名 2> <ライブラリ名 3> ... | |||
</syntaxhighlight> | |||
<br> | <br> | ||
変数<code>PKGCONFIG</code>は、pkg-configツールを使用してライブラリの情報を取得するためのものであるため、ライブラリのフルパスを指定することは一般的ではない。<br> | 変数<code>PKGCONFIG</code>は、pkg-configツールを使用してライブラリの情報を取得するためのものであるため、ライブラリのフルパスを指定することは一般的ではない。<br> | ||
574行目: | 587行目: | ||
<br> | <br> | ||
もし、ライブラリが一般的の場所にインストールされていない場合や特別な状況でフルパスを指定する場合は、変数<code>LIBS</code>、変数<code>INCLUDEPATH</code>にフルパスを指定する。<br> | もし、ライブラリが一般的の場所にインストールされていない場合や特別な状況でフルパスを指定する場合は、変数<code>LIBS</code>、変数<code>INCLUDEPATH</code>にフルパスを指定する。<br> | ||
<br> | |||
==== 非推奨の記述 ==== | |||
また、以下に示すような記述は非推奨である。<br> | |||
<syntaxhighlight lang="make"> | |||
# 非推奨の記述方法 | |||
# Systemdライブラリを使用する場合 | |||
PKGCONFIG += libsystemd | |||
LIBS += -L/usr/lib64 -lsystemd | |||
</syntaxhighlight> | |||
<br> | |||
この記述は冗長であり、潜在的な問題を引き起こす可能性がある。<br> | |||
* 重複したリンク指定 | |||
*: Pkg-configを使用することにより、既に必要なリンク情報を提供しており、ライブラリの場所とリンクするライブラリ名が含まれている。 | |||
*: そのため、変数PKGCONFIGにライブラリ名を指定する必要はない。 | |||
*: <br> | |||
* バージョン不一致のリスク | |||
*: 変数LIBSにおいて、明示的にパスとライブラリを指定する場合、Pkg-configが提供する情報と矛盾する可能性がある。 | |||
*: これにより、異なるバージョンのライブラリがリンクされる、または、互換性の問題が発生する可能性がある。 | |||
*: <br> | |||
* 移植性の低下 | |||
*: ハードコードされたパス (/usr/lib64等) は、異なるシステムや環境では正しくない可能性がある。 | |||
*: Pkg-configを使用するメリットの1つは、システム間の違いを抽象化できることである。 | |||
<br><br> | <br><br> | ||