Развертывание приложения Qt на Mac - PullRequest
1 голос
/ 16 декабря 2010

Я сделал приложение, и кажется, что оно работает нормально, когда я создаю режим релиза. Вот вывод: otool -L RightDoneIt.app/Contents/MacOs/rightdoneit

/opt/local/lib/libMagick++.4.dylib (compatibility version 5.0.0, current version 5.0.0)
QtGui.framework/Versions/4/QtGui (compatibility version 4.7.0, current version 4.7.0)
QtCore.framework/Versions/4/QtCore (compatibility version 4.7.0, current version 4.7.0)
/usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.9.0)
/usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 625.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.1)

Как видно из первой строки, я использую библиотеку ImageMagick

После этого я должен выполнить развертывание с помощью инструмента macdeployqt: deployqt RightDoneIt.app -dmg Это производит все ожидаемые файлы, и когда я печатаю проверку с otool, я получаю

@executable_path/../Frameworks/libMagick++.4.dylib (compatibility version 5.0.0, current version 5.0.0)
@executable_path/../Frameworks/QtGui.framework/Versions/4/QtGui (compatibility version 4.7.0, current version 4.7.0)
@executable_path/../Frameworks/QtCore.framework/Versions/4/QtCore (compatibility version 4.7.0, current version 4.7.0)
/usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.9.0)
/usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 625.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.1)

Если я пытаюсь запустить приложение, созданное с помощью deploytool, я получаю ошибку времени выполнения каждый раз, когда пытаюсь запустить функцию ImageMagick.

Кто-нибудь знает, как это исправить?

Ответы [ 2 ]

1 голос
/ 13 февраля 2013

Для справки:

Здесь xxxx = имя приложения

  1. Создайте свой проект в режиме релиза мелкой сборки.

  2. cd /Users/QtSDK/QtSources/4.7.4/bin или /Users/xxxx/Desktop/abc/qt-everywhere-opensource-src-4.8.4/bin

  3. В терминале: ./macdeployqt "path to .app file"
  4. Это создаст файл приложения со всеми зависимыми библиотеками. В терминале:

    • CD "Release folder (.app folder)"
    • install_name_tool -id @executable_path/../Frameworks/libtag.1.dylib xxxx.app/Contents/Frameworks/libtag.1.dylib

    • install_name_tool -change /Users/xxxx/wav/taglib-1.8/Build/taglib/libtag.1.dylib @executable_path/../Frameworks/libtag.1.dylib xxxx.app/Contents/MacOs/xxxx

    • install_name_tool -change /Users/xxxx/wav/taglib-1.8/Build/taglib/libtag.1.dylib @executable_path/../Frameworks/libtag.1.dylib xxxx.app/Contents/Frameworks/libtag.1.dylib

  5. Проверьте другие зависимые библиотеки, такие как taglib, с помощью команды терминала CD "Release folder В терминале: tool -L appliaxtion файл, если есть какая-либо ошибка, тогда CD xxxx.app/Contents/MacOS, затем наберите tool -L xxxx и увидите все зависимые библиотеки. и выполните шаг 4. для всех зависимых библиотек.

  6. Скопируйте всю зависимую библиотеку в app/contents/Frameworks.
  7. Скопируйте ffmpeg, lastfm и т. Д. (Требуется только папка или файлы) в app/contents/MacOs Для создания DMG: - ( подробности здесь ) или Использовать DMG Canvas.
1 голос
/ 15 февраля 2011

У меня похожая ситуация, и я не могу найти автоматический инструмент в Интернете.Просто проверьте libMagick ++. 4.dylib с помощью otool и запустите install_name_tool для libMagick ++. 4.dylib

...