2017-03-13 120 views
1

我目前正試圖在MacOs上部署我的Qt5.8應用程序。最新的特拉維斯工作是here。在使用macdeployqt後,我得到了VNote.dmg文件。然後,我把它複製到另一個MacOS和試圖逃跑,但得到了以下錯誤:macdeployqt似乎無法正常工作

/Applications/VNote/VNote.app/Contents/MacOS/VNote ; exit; 
dyld: Library not loaded: /usr/local/Cellar/qt5/5.8.0_1/lib/QtWebEngineCore.framework/Versions/5/QtWebEngineCore 
    Referenced from: /Applications/VNote/VNote.app/Contents/Frameworks/QtWebEngineWidgets.framework/Versions/5/QtWebEngineWidgets 
    Reason: image not found 
Trace/BPT trap: 5 
logout 

然後我用otool -L /Applications/VNote.app/Contents/MacOS/VNote得到輸出:

/Applications/VNote.app/Contents/MacOS/VNote: 
    @executable_path/../Frameworks/QtWebEngineWidgets.framework/Versions/5/QtWebEngineWidgets (compatibility version 5.8.0, current version 5.8.0) 
    @executable_path/../Frameworks/QtWebEngineCore.framework/Versions/5/QtWebEngineCore (compatibility version 5.8.0, current version 5.8.0) 
    @executable_path/../Frameworks/QtQuick.framework/Versions/5/QtQuick (compatibility version 5.8.0, current version 5.8.0) 
    @executable_path/../Frameworks/QtGui.framework/Versions/5/QtGui (compatibility version 5.8.0, current version 5.8.0) 
    @executable_path/../Frameworks/QtCore.framework/Versions/5/QtCore (compatibility version 5.8.0, current version 5.8.0) 
    /System/Library/Frameworks/DiskArbitration.framework/Versions/A/DiskArbitration (compatibility version 1.0.0, current version 1.0.0) 
    /System/Library/Frameworks/IOKit.framework/Versions/A/IOKit (compatibility version 1.0.0, current version 275.0.0) 
    @executable_path/../Frameworks/QtQml.framework/Versions/5/QtQml (compatibility version 5.8.0, current version 5.8.0) 
    @executable_path/../Frameworks/QtNetwork.framework/Versions/5/QtNetwork (compatibility version 5.8.0, current version 5.8.0) 
    @executable_path/../Frameworks/QtWebChannel.framework/Versions/5/QtWebChannel (compatibility version 5.8.0, current version 5.8.0) 
    @executable_path/../Frameworks/QtPositioning.framework/Versions/5/QtPositioning (compatibility version 5.8.0, current version 5.8.0) 
    @executable_path/../Frameworks/QtPrintSupport.framework/Versions/5/QtPrintSupport (compatibility version 5.8.0, current version 5.8.0) 
    @executable_path/../Frameworks/QtWidgets.framework/Versions/5/QtWidgets (compatibility version 5.8.0, current version 5.8.0) 
    /System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL (compatibility version 1.0.0, current version 1.0.0) 
    /System/Library/Frameworks/AGL.framework/Versions/A/AGL (compatibility version 1.0.0, current version 1.0.0) 
    /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 307.4.0) 
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1238.0.0) 

然後otool -L /Applications/VNote.app/Contents/Frameworks/QtWebEngineWidgets.framework/Versions/5/QtWebEngineWidgets顯示:

/Applications/VNote.app/Contents/Frameworks/QtWebEngineWidgets.framework/Versions/5/QtWebEngineWidgets: 
    @executable_path/../Frameworks/QtWebEngineWidgets.framework/Versions/5/QtWebEngineWidgets (compatibility version 5.8.0, current version 5.8.0) 
    /usr/local/Cellar/qt5/5.8.0_1/lib/QtWebEngineCore.framework/Versions/5/QtWebEngineCore (compatibility version 5.8.0, current version 5.8.0) 
    /usr/local/Cellar/qt5/5.8.0_1/lib/QtQuick.framework/Versions/5/QtQuick (compatibility version 5.8.0, current version 5.8.0) 
    /usr/local/Cellar/qt5/5.8.0_1/lib/QtGui.framework/Versions/5/QtGui (compatibility version 5.8.0, current version 5.8.0) 
    /usr/local/Cellar/qt5/5.8.0_1/lib/QtCore.framework/Versions/5/QtCore (compatibility version 5.8.0, current version 5.8.0) 
    /System/Library/Frameworks/DiskArbitration.framework/Versions/A/DiskArbitration (compatibility version 1.0.0, current version 1.0.0) 
    /System/Library/Frameworks/IOKit.framework/Versions/A/IOKit (compatibility version 1.0.0, current version 275.0.0) 
    /usr/local/Cellar/qt5/5.8.0_1/lib/QtQml.framework/Versions/5/QtQml (compatibility version 5.8.0, current version 5.8.0) 
    /usr/local/Cellar/qt5/5.8.0_1/lib/QtNetwork.framework/Versions/5/QtNetwork (compatibility version 5.8.0, current version 5.8.0) 
    /usr/local/Cellar/qt5/5.8.0_1/lib/QtWebChannel.framework/Versions/5/QtWebChannel (compatibility version 5.8.0, current version 5.8.0) 
    /usr/local/Cellar/qt5/5.8.0_1/lib/QtPositioning.framework/Versions/5/QtPositioning (compatibility version 5.8.0, current version 5.8.0) 
    /usr/local/Cellar/qt5/5.8.0_1/lib/QtPrintSupport.framework/Versions/5/QtPrintSupport (compatibility version 5.8.0, current version 5.8.0) 
    /usr/local/Cellar/qt5/5.8.0_1/lib/QtWidgets.framework/Versions/5/QtWidgets (compatibility version 5.8.0, current version 5.8.0) 
    /usr/local/Cellar/qt5/5.8.0_1/lib/QtQuickWidgets.framework/Versions/5/QtQuickWidgets (compatibility version 5.8.0, current version 5.8.0) 
    /System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL (compatibility version 1.0.0, current version 1.0.0) 
    /System/Library/Frameworks/AGL.framework/Versions/A/AGL (compatibility version 1.0.0, current version 1.0.0) 
    /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 307.4.0) 
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1238.0.0) 

QtWebEngineWidgets似乎仍然參考了Travis env上的絕對路徑。

我該如何部署Qt應用程序?非常感謝!

+0

你說你試圖部署一個Qt 5.7應用程序,但是地下室庫的引用指的是5.8。你的生成機器上有兩個Qt版本,這個版本越來越困惑嗎? – TheDarkKnight

+0

@ TheDarkKnight對不起,我感到困惑。我使用Qt5.7進行本地開發,而Travis使用Qt5.8。它可以構建目標,所以我認爲Qt5.8可以構建Qt5.7應用程序,對吧? – tamlok

+0

我相信你是問題;從5.7 Qt框架調用macdeployqt並尋找解決5.7庫的路徑。 5.8 Qt庫將被忽略,所以你需要將它作爲[第三方庫](http://stackoverflow.com/questions/18780602/automatically-include-qt-libraries-in-the-app-bundle-部署 - 在mac/18781575#18781575),使用* install_name_tool *並自己動手。更好的解決方案是將自己的代碼升級到5.8。 – TheDarkKnight

回答

1

我認爲這是macdeployqt的錯誤。它似乎沒有解決所有框架的依賴性。相反,它只是修復了可執行文件的直接依賴關係。

感謝macdeployqtfix,這是一個工具,做所有的事情macdeployqt忘了。

順便說一句,如果您的應用程序使用QWebEngineWidget,則還需要macdeployqt幫助程序QWebEngineProcess包。

相關問題