我正在从源头构建qt 5。我想知道在MacOS下复制粘贴qt二进制文件的最简单方法是什么。如果您在任何qt框架上运行otool,您将看到所有依赖项都使用绝对路径:
bash-3.2$ otool -L QtWidgets
QtWidgets:
/Users/../Qt/qt5/qtbase/lib/QtWidgets.framework/Versions/5/QtWidgets (compatibility version 5.1.0, current version 5.1.1)
/Users/../Qt/qt5/qtbase/lib/QtGui.framework/Versions/5/QtGui (compatibility version 5.1.0, current version 5.1.1)
/Users/../Qt/qt5/qtbase/lib/QtCore.framework/Versions/5/QtCore (compatibility version 5.1.0, current version 5.1.1)
/System/Library/Frameworks/Carbon.framework/Versions/A/Carbon (compatibility version 2.0.0, current version 155.0.0)
/System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa (compatibility version 1.0.0, current version 19.0.0)
/usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.5)
/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 65.1.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 169.3.0)
/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 744.18.0)
/usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 228.0.0)
/System/Library/Frameworks/Foundation.framework/Versions/C/Foundation (compatibility version 300.0.0, current version 945.16.0)
/System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices (compatibility version 1.0.0, current version 45.0.0)
/System/Library/Frameworks/AppKit.framework/Versions/C/AppKit (compatibility version 45.0.0, current version 1187.37.0)
当我复制qt二进制文件并将我的应用程序链接到该副本时,它可以工作,但是一些依赖的框架是从旧的地方获取的。当我尝试将二进制文件移动到另一台机器时,事情变得更糟。我知道可以使用install_name_tool修复问题,但这是一个很容易出错的手动工作。我想知道是否有一个脚本可以帮助我吗?
答案 0 :(得分:3)
经过长时间的互联网搜索。我发现Qt Installer Framework有必要的代码来修补Mac OSX下重定位的Qt二进制文件。运行该代码有一个小问题,它是用C ++编写的,并不容易编译,因为它依赖于Qt4而我使用的是Qt5.1。幸运的是,事实证明所有操作都可以通过命令行获得。 要使用该命令,您需要使用Qt Installer Framework创建的任何安装程序(适用于Mac OSX的Qt二进制安装程序已经足够)并使用以下命令:
./qt-mac-opensource-5.1.0-clang-offline.app/Contents/MacOS/qt-mac-opensource-5.1.0-clang-offline --runoperation "QtPatch" "mac"
"/Path/to/Qt/binaries/which/need/to/be/patched" "qt5"
========================================
Operation was successfully performed.
如果您收到错误消息“qmake不是某个程序”或类似的内容,请尝试chmod qmake:
chmod 777 qmake
注意:这适用于任何QtIFW安装程序。玩prebuilt version of QtIFW
好的,就是这样,这是我迄今为止发现的最直接的方式。
答案 1 :(得分:1)
如果您正在从源代码构建QT5,那么静态链接将解决您的一些麻烦。
列出的原始链接破了。
在运行./configure例如。
时,为参数构建QT静态添加-static
。
./configure -prefix /Developer/qt -qt-zlib -qt-libpng -qt-libjpeg -universal -sdk /Developer/SDKs/MacOSX10.4u.sdk -static -release
编译:{{1}}
安装时使用:make sub-src