Я использую Qt Creator 3.6.1
с Qt 5.6.0 (Clang 7.0 (Apple), 64 bit)
и столкнулся с некоторыми проблемами при попытке создать пакет приложений для развертывания.
Примечание. Имя приложения называется bibi
Qt Creator
успешно сгенерированоbibi.app
в папкеbuild-bibi-Desktop_Qt_5_6_0_clang_64bit-Release/
- Этому
bibi.app
не удалось успешно связать Qt с другим Mac macdeployqt
не решает проблему
Ниже приведены подробности:
Снимок экрана с ошибкой при запуске bibi.app
на другом Mac:
инструмент
> otool -L build-bibi-Desktop_Qt_5_6_0_clang_64bit-Release/bibi.app/Contents/MacOS/bibi
build-bibi-Desktop_Qt_5_6_0_clang_64bit-Release/bibi.app/Contents/MacOS/bibi:
@rpath/QtWidgets.framework/Versions/5/QtWidgets (compatibility version 5.6.0, current version 5.6.0)
@rpath/QtGui.framework/Versions/5/QtGui (compatibility version 5.6.0, current version 5.6.0)
@rpath/QtCore.framework/Versions/5/QtCore (compatibility version 5.6.0, current version 5.6.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 120.1.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1226.10.1)
macdeployqt
> which macdeployqt
/Users/<myusername>/Qt/5.6/clang_64/bin/macdeployqt
> macdeployqt bibi.app
> otool -L bibi.app/Contents/MacOS/bibi
bibi.app/Contents/MacOS/bibi:
@rpath/QtWidgets.framework/Versions/5/QtWidgets (compatibility version 5.6.0, current version 5.6.0)
@rpath/QtGui.framework/Versions/5/QtGui (compatibility version 5.6.0, current version 5.6.0)
@rpath/QtCore.framework/Versions/5/QtCore (compatibility version 5.6.0, current version 5.6.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 120.1.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1226.10.1)
дерево bibi.app
bibi.app
├── Contents
│ ├── Frameworks
│ │ ├── QtCore.framework
│ │ │ ├── QtCore -> Versions/Current/QtCore
│ │ │ ├── Resources -> Versions/Current/Resources
│ │ │ └── Versions
│ │ │ ├── 5
│ │ │ │ ├── QtCore
│ │ │ │ └── Resources
│ │ │ │ └── Info.plist
│ │ │ └── Current -> 5
│ │ ├── QtDBus.framework
│ │ │ ├── QtDBus -> Versions/Current/QtDBus
│ │ │ ├── Resources -> Versions/Current/Resources
│ │ │ └── Versions
│ │ │ ├── 5
│ │ │ │ ├── QtDBus
│ │ │ │ └── Resources
│ │ │ │ └── Info.plist
│ │ │ └── Current -> 5
│ │ ├── QtGui.framework
│ │ │ ├── QtGui -> Versions/Current/QtGui
│ │ │ ├── Resources -> Versions/Current/Resources
│ │ │ └── Versions
│ │ │ ├── 5
│ │ │ │ ├── QtGui
│ │ │ │ └── Resources
│ │ │ │ └── Info.plist
│ │ │ └── Current -> 5
│ │ ├── QtPrintSupport.framework
│ │ │ ├── QtPrintSupport -> Versions/Current/QtPrintSupport
│ │ │ ├── Resources -> Versions/Current/Resources
│ │ │ └── Versions
│ │ │ ├── 5
│ │ │ │ ├── QtPrintSupport
│ │ │ │ └── Resources
│ │ │ │ └── Info.plist
│ │ │ └── Current -> 5
│ │ └── QtWidgets.framework
│ │ ├── QtWidgets -> Versions/Current/QtWidgets
│ │ ├── Resources -> Versions/Current/Resources
│ │ └── Versions
│ │ ├── 5
│ │ │ ├── QtWidgets
│ │ │ └── Resources
│ │ │ └── Info.plist
│ │ └── Current -> 5
│ ├── Info.plist
│ ├── MacOS
│ │ └── bibi
│ ├── PkgInfo
│ ├── PlugIns
│ │ ├── imageformats
│ │ │ ├── libqdds.dylib
│ │ │ ├── libqgif.dylib
│ │ │ ├── libqicns.dylib
│ │ │ ├── libqico.dylib
│ │ │ ├── libqjpeg.dylib
│ │ │ ├── libqtga.dylib
│ │ │ ├── libqtiff.dylib
│ │ │ ├── libqwbmp.dylib
│ │ │ └── libqwebp.dylib
│ │ ├── platforms
│ │ │ └── libqcocoa.dylib
│ │ └── printsupport
│ │ └── libcocoaprintersupport.dylib
│ └── Resources
│ ├── empty.lproj
│ └── qt.conf
└── Icon\r
38 directories, 32 files
Спасибо.
Проблема решена
Спасибо, Скотт, и проблема решена. Вот причины, по которым мне не удалось успешно создать автономный пакет приложений:
otool -L
не разрешил @rpath, и я был сбит с толку, так как он всегда возвращал мне один и тот же вывод- отсутствие способа проверить, содержит ли пакет уже все фреймворки
Короче говоря, проблему можно решить, используя Скотта otool-rpath
, lsof
или установив DYLD_PRINT_LIBRARIES
и DYLD_PRINT_TO_FILE
. И я написал заметку с подробностями здесь.