「.so」サフィックスは、OS X では意味がありません。Linux などの ELF プラットフォームでは、「*.so」ファイルは共有ライブラリです。OS X では、共有ライブラリの拡張子は「.dylib」です。Linux では、プラグインは共有ライブラリ (*.so) として実装されています。OS X では、共有ライブラリをアンロードできません。そのため、プラグインには適していません。
OS X では、プラグインを実装するために、共有ライブラリの代わりにバンドルを使用します。前回見たとき、qmake はこれを直接サポートしていません。ただし、バンドルを構築するためにリンカー フラグを変更できます。デフォルトでは、qmake は *.dylib を構築する「-dynamiclib」リンカー フラグを使用します。代わりに、バンドルをビルドする「-bundle」フラグを使用する必要があります。これを試すことができます:
CONFIG += plugin
QMAKE_LFLAGS_PLUGIN -= -dynamiclib
QMAKE_LFLAGS_PLUGIN += -bundle
バンドルのファイル拡張子は標準化されていません。必要なものは何でも使用できます (.so、.dylib、.plugin、.donald_duck など)。Apple は「.bundle」を推奨していますが、強制はしていません。作成されたバンドルのファイル名を制御するには、QMAKE_EXTENSION_SHLIB
およびを設定できますQMAKE_PREFIX_SHLIB
。たとえば、 を取得するには、次のようmylib.bundle
に設定します。
QMAKE_EXTENSION_SHLIB = bundle
QMAKE_PREFIX_SHLIB =
代わりに を取得したい場合はlibmylib.so
、次のように設定するだけです:
QMAKE_PREFIX_SHLIB = so
名前が示すようQMAKE_EXTENSION_SHLIB
に、ファイル拡張子 (. を除く.
) とQMAKE_PREFIX_SHLIB
ファイル プレフィックス (デフォルトではlib
.