「.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.