我有一个问题,因为该版本5.1rc2的QtMac OS X的(5.1也受到影响,而不是5.1rc1)
当我建立我的应用程序,做一个otool -L对二进制文件看到共享库的路径,我得到:(这是只是一个样本,为了清楚起见我删除了一些
/System/Library/Frameworks/AppKit.framework/Versions/C/AppKit
(compatibility version 45.0.0, current version 1187.37.0)
/Users/chris/**Qt5.1.0//5.1.0**/clang_64/lib/QtWebKitWidgets.framework/Versions/5/QtWebKitWidgets
(compatibility version 5.1.0, current version 5.1.0)
/Users/chris/Qt5.1.0//5.1.0/clang_64/lib/QtQuick.framework/Versions/5/QtQuick
(compatibility version 5.1.0, current version 5.1.0)
/Users/chris/Qt5.1.0//5.1.0/clang_64/lib/QtQml.framework/Versions/5/QtQml
(compatibility version 5.1.0, current version 5.1.0)
/Users/chris/Qt5.1.0//5.1.0/clang_64/lib/QtNetwork.framework/Versions/5/QtNetwork
(compatibility version 5.1.0, current version 5.1.0)
/Users/chris/Qt5.1.0//5.1.0/clang_64/lib/QtCore.framework/Versions/5/QtCore
(compatibility version 5.1.0, current version 5.1.0)
/Users/chris/Qt5.1.0//5.1.0/clang_64/lib/QtGui.framework/Versions/5/QtGui
(compatibility version 5.1.0, current version 5.1.0)
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,Qt库的路径中存在双斜杠.当我使用macdeployqt部署我的应用程序时,这些路径不会更改为本地框架(@executable_path /../ Frameworks/...),因为这...我必须使用install_name_tool手动执行,并且它是真烦人
我该怎么做才能解决这个问题?(我已经尝试重新安装Qt,清理,再次运行qmake并重建而无需更改)
我在项目中大量使用c ++ 0x/c ++ 11特性,特别是代码块和共享指针.当我将操作系统升级到10.8 Mountain Lion(编辑:从10.7开始)时,我被迫升级Xcode.在升级Xcode时,我失去了编译我的c ++项目以便在10.6系统上部署的能力,因为我收到以下错误.
clang: error: invalid deployment target for -stdlib=libc++ (requires Mac OS X 10.7 or later)
苹果似乎试图通过不允许开发者支持Snow Leopard来强迫人们进行升级.这让我很生气.Arrrggg!
我能做什么?
编辑:经过几次来回评论后,应该明确10.6不附带系统libc ++库.因此,仅仅为10.6部署构建libc ++项目是不够的.您还需要在您的10.6发行版中包含libc ++二进制文件,或者静态链接到它们.所以让我们继续我已经在做的那个前提.
更新1:此问题最初打算用于Xcode 4.5.2(问题提出时的最新版本).我已经升级到Xcode 4.6.3并更新了问题和答案以反映这一点.
更新2:我已经升级到Xcode 5.0.2.以下所选答案中列出的技术仍可按预期工作.
更新3:我已经升级到Xcode 5.1.下面的答案中列出的技术尚不适用于此版本!
更新4:我已经升级到Xcode 6.0.1.以下所选答案中列出的技术似乎再次起作用.
更新5:我已经升级到Xcode 7.1.1.下面选定答案中列出的技术似乎再次起作用,但有一个重要的警告.您必须禁用Bitcoding用于AppThinning因为开源LLVM版本不支持它(也不应该).因此,您需要在开源和Apple LLVM clang之间切换,以便为10.6和tvOS/watchOS进行编译(因为这些操作系统需要Bitcoding).