3

Mac でプラグイン/ライブラリを .so としてビルドする必要があります。これは、Linux では追加のトリックなしで発生し、魅力のように機能します。

.pro ファイルに追加する必要があるオプションは何ですか?

CONFIG += debug
QT += xml
TEMPLATE = lib
TARGET = mylib
DEPENDPATH += .
macx:INCLUDEPATH += ../../../Test \
  /usr/local/include/

macx:LIBS += -L../../../Test/lib

DEFINES += CORE_EXPORT=
DEFINES += GUI_EXPORT=

HEADERS += test.h testGui.h
FORMS += testGui.ui
SOURCES += test.cpp testGui.cpp
RESOURCES += test.qrc
4

2 に答える 2

3

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

于 2012-10-19T17:55:30.807 に答える
0

バンドルの後に-dynamiclibs行を配置する必要があるかもしれません...私にとってはうまくいきます。

ここで見つかりました:

http://jonmacey.blogspot.com/2012/03/using-maya-api-with-qt-creator.html

于 2013-01-25T13:50:43.530 に答える