2009-09-14 1 views
3

나는 Crossplatform Qt4/PyQt4/python 응용 프로그램, 즉 MyGreatApp을 작성했으며, 마지막 버전에는 Phonon 모듈이 필요합니다. MyGreatApp는 Mac OS X 10.6 Snow Leopard에서 내 컴퓨터에서 잘 실행되며 Qt4.4가 설치된 모든 Mac에서 더 일반적으로 실행됩니다. 그러나 무고한 기계는 비참 포논를로드하는 데 실패 : 어떤 의존성이 실행에 남아 분명한 것 같다Mac OS X에서 Phonon-dependent Qt4/PyQt4/python 응용 프로그램을 배포하는 방법은 무엇입니까?

WARNING: bool Phonon::FactoryPrivate::createBackend() phonon backend plugin could not be loaded 

. 여기에 포함 된 포논 물건 : 응용 프로그램을 구축 한 후 내가 호출하는 install_name_tool 명령 여기

$ find . -name "*phonon*" -print 
./Contents/Frameworks/phonon.framework 
./Contents/Frameworks/phonon.framework/phonon 
./Contents/Frameworks/phonon.framework/phonon.prl 
./Contents/Frameworks/phonon.framework/Versions/4/phonon 
./Contents/plugins/phonon_backend 
./Contents/plugins/phonon_backend/libphonon_qt7.dylib 
./Contents/Resources/lib/python2.5/lib-dynload/PyQt4/phonon.so 

그리고있다 :

PLUGINSREF = /usr/local/Trolltech/Qt-4.4.3/plugins 
QTLIB  = /usr/local/Trolltech/Qt-4.4.3/lib 
PLUGINS = dist/MyGreatApp.app/Contents/plugins 
RESOURCES = dist/MyGreatApp.app/Contents/Resources 
PHONON  = phonon.framework/Versions/4/phonon 
QTCORE  = QtCore.framework/Versions/4/QtCore 
QTGUI  = QtGui.framework/Versions/4/QtGui 

echo "Installing plugins" 
mkdir -p "$PLUGINS"/phonon_backend 
cp $PLUGINSREF/phonon_backend/libphonon_qt7.dylib "$PLUGINS"/phonon_backend 
install_name_tool -change $QTLIB/$PHONON @executable_path/../Frameworks/$PHONON "$PLUGINS"/phonon_backend/libphonon_qt7.dylib 
install_name_tool -change $QTLIB/$QTCORE @executable_path/../Frameworks/$QTCORE "$PLUGINS"/phonon_backend/libphonon_qt7.dylib 
install_name_tool -change $QTLIB/$QTGUI @executable_path/../Frameworks/$QTGUI "$PLUGINS"/phonon_backend/libphonon_qt7.dylib 

echo "Adding Panther compatibility when building on Leopard" 
install_name_tool -change /System/Library/Frameworks/CoreVideo.framework/Versions/A/CoreVideo /System/Library/Frameworks/QuartzCore.framework/Versions/A/QuartzCore "$PLUGINS"/phonon_backend/libphonon_qt7.dylib 

echo "Installing dynamic libraries" 
install_name_tool -change $QTLIB/$PHONON @executable_path/../Resources/lib/$PHONON "$RESOURCES"/lib/python2.5/lib-dynload/PyQt4/phonon.so 
install_name_tool -change $QTLIB/$QTCORE @executable_path/../Resources/lib/$QTCORE "$RESOURCES"/lib/python2.5/lib-dynload/PyQt4/phonon.so 
install_name_tool -change $QTLIB/$QTGUI @executable_path/../Resources/lib/$QTGUI "$RESOURCES"/lib/python2.5/lib-dynload/PyQt4/phonon.so 

잘못, 또는 힌트는 진단을 개선하기 위해 무엇에 대한 어떤 생각?

+0

'pyinstaller'와'appdmg'가 짝을 지어서 궁금해하면 궁금할까요? –

답변

3

Qt의 소스 배포판을 보시면 (그냥 다운로드해서 직접 빌드해야 할 수도 있습니다), "macdeploy_qt"라는 빌드 유틸리티가 있습니다. 실행 파일로 응용 프로그램 번들을 설정하면 (예 : myapp.app을 만들고 myapp.app/Contents/MacOS에서 'myapp'실행 파일을 실행) 'macdeploy_qt myapp.app'를 실행하면 모든 install_name_tool이 실행되고 프레임 워크 - 투 - 리소스가 당신을 위해 움직이며, '잘 작동'해야하는 앱 번들을 건네줍니다.

+0

"macdeploy_qt"는 실제로 Qt 4.5가 아니라 Qt 4.4에 포함되어 있습니다. 직접 구축하는 데 성공하지 못했습니다. 설치를 Qt 4.5로 업그레이드해야 할 수도 있습니다. 그러나 스노우 레오파드에 대한 모든 혼란 (Qt + SIP + PyQT) 재건은 나에게 매우 무섭다. 특히 "이 맥 오에스텐 버전에 대한 지원은 아직 예비 적이다". 사실, 어제부터이 작업을 시도하고 있습니다. 구성 단계에서 PyQt가 실패하는 것입니다. 나는 그것이 또 다른 질문이라고 생각한다 :-( 어쨌든 친절한 답변을 주셔서 감사합니다 – Aristide

+0

"qmake macdeployqt.pro && make"로 macdeployqt를 빌드하려고하면 후자의 명령은 "AvailabilityMacros.h"파일을 찾을 수 없다는 불평을합니다. ", 실제로/Developer/SDKs /의 몇몇 하위 디렉토리에 나타납니다. ... – Aristide

+0

** macdeployqt **에 대한 정보를 제공해 주셔서 감사합니다 (현재 Qt 4.8에서 이와 같이 불려 짐). –