サードパーティライブラリ

Qtでサードパーティライブラリを使うのは簡単です。例えば、猫の鳴き声の音声サンプルを受け取り、それを英単語に翻訳するクロスプラットフォーム・ライブラリを知っているとします。このライブラリはCatWhisperer という名前で、ライブラリの一部として提供するいくつかのファイルを持っています。あなたのプロジェクトMyQtApp は、これらのファイルを3rdparty という名前のフォルダに保存しています:

  • MyQtApp/
    • MyQtApp.pro
    • src/
      • main.cpp
    • サードパーティ
      • キャットウィスパラー
        • インクルード
          • CatWhisperer.h
        • lib/
          • libCatWhisperer.so
          • CatWhisperer.lib
        • bin/
          • CatWhisperer.dll

MyQtAppCatWhisperer ライブラリを使うには、qmakeCatWhisperer ライブラリの場所と名前が必要です。オプションとして、次のこともできる:

  • CatWhisperer のソースコードの場所を指定することで、自分のコードにインクルードする際に各ファイルへのフルパスを入力する必要がなくなります。
  • MyQtApp 実行ファイルの作成先を選択します。

上記の情報は、qmake が解析してメイクファイルを作成できるように、.pro ファイルで提供されます。メイクファイルには、コンパイラやリンカが実行ファイルや別のライブラリファイルなどの出力を生成するために必要なすべての情報が含まれています。次のセクションでは、qmake がこれらの情報を提供するために期待する構文について説明します。

ソース・コード

の代わりに

#include <CatWhisperer.h>

の代わりに

#include <3rdparty/CatWhisperer/include/CatWhisperer.h>

の代わりに記述できるようにするには、INCLUDEPATH変数を使用して、CatWhisperer include ディレクトリへのパスを指定します:

INCLUDEPATH += 3rdparty/CatWhisperer/include

ライブラリファイル

CatWhisperer ライブラリ・ファイルの場所をqmake に知らせるには、LIBS変数を使用する:

LIBS += -L"3rdparty/CatWhisperer/lib" -lCatWhisperer

式の最初の部分は、リンカにどのディレクトリでライブラリ・ファイルを探せばよいかを知らせる。二重引用符は、パスにスペースが含まれている場合にのみ必要なので、この例では省略できます。

2番目の部分は、リンカーにリンクするライブラリを指定します。UNIX プラットフォーム用と Windows 用に、それぞれlibCatWhisperer.soCatWhisperer.lib という 2 種類のライブラリ・ファイルを用意しています。.lib という拡張子や、lib という接頭辞(UNIX プラットフォームの場合)を指定する必要はありません。

インストール先ディレクトリ

デフォルトでは、qmake は実行ファイルを.pro ファイルと同じディレクトリに作成します。DESTDIR変数を使って、任意のディレクトリを選択することができる:

DESTDIR = bin

以上である!これで、プロジェクトでCatWhisperer 。最終的な.pro ファイルはこのようになります:

TARGET = MyQtApp

TEMPLATE = app

INCLUDEPATH += 3rdparty/CatWhisperer/include

SOURCES += src/main.cpp

LIBS += -L"3rdparty/CatWhisperer/lib" -lCatWhisperer

qmake Manualと Qt Creatorも参照してください :プロジェクトにライブラリを追加する」も参照してください。

本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。