Qt-creator示例无法为iphonesimulator构建
我已经在El Capitan上使用Xcode 8成功安装了Qt 5.7.0和Qt-creator 4.1.0。
我修复了qt中的xcode sdk-version错误 ,现在我正在尝试为iphonesimulator构建一个示例。 他们都没有工作。 所有这些都失败并显示类型的错误消息:
The following build commands failed: CopyPNGFile Debug-iphonesimulator/2dpainting.app/Default-568h@2x.png 2dpainting.xcodeproj/Default-568h@2x.png
我可以确认目录Debug-iphonesimulator / 2dpainting.app没有png文件,它实际上位于qt安装目录中的某个位置。 将png复制到源文件夹没有帮助,因为在运行’make’时文件夹被覆盖。
任何意见,将不胜感激。
编辑:构建工具包警告以下问题:“Qt版本不支持设备类型”。 设备类型是“iOS模拟器”。
我将Xcode更新到8.0版后遇到了同样的问题。
我的第一个错误是“ Project ERROR:Xcode没有正确设置。您可能需要通过运行/ usr / bin / xcodebuild来确认许可协议。 ”为了解决这个问题,我创建了一个符号链接:
cd /Applications/Xcode.app/Contents/Developer/usr/bin/ sudo ln -s xcodebuild xcrun
然后我收到错误“ Project ERROR:当前iphonesimulator SDK版本(10.0)太旧了。请升级Xcode。 ”我在文件QT_DIR / 5.7 / ios / mkspecs / macx-ios-clang / features / sdk.prf中评论了两个字符串。
lessThan(QMAKE_MAC_SDK_VERSION, "8.0"): \ error("Current $$QMAKE_MAC_SDK SDK version ($$QMAKE_MAC_SDK_VERSION) is too old. Please upgrade Xcode.")
然后我得到了关于模拟器的错误。 Qt找不到它。 我替换了文件QT_DIR / 5.7 / ios / mkspecs / macx-ios-clang / xcodebuild.mk中的代码行:
IPHONESIMULATOR_GENERIC_DESTINATION := "id=$(shell xcrun simctl list devices | grep -E 'iPhone|iPad' | grep -v unavailable | perl -lne 'print $$1 if /((.*?))/' | tail -n 1)"
至:
IPHONESIMULATOR_GENERIC_DESTINATION := "id=$(shell xcrun simctl list devices | grep -E 'iPhone|iPad' | grep -v unavailable | awk 'match ($$0, /\(([A-F0-9\-]*\))/ ) { print substr ($$0, RSTART+1, RLENGTH-2) }' | tail -n 1)"
最后,我得到了错误“ 以下构建命令失败:CopyPNGFile Debug-iphonesimulator/Test01.app/Default-568h@2x.png Test01.xcodeproj/Default-568h@2x.png ”
由于系统有两个文件xcrun ,因此发生此错误。 脚本/Applications/Xcode.app/Contents/Developer/usr/bin/copypng启动一个,这是一个符号链接。 然后我改变了这个脚本中的路径:
my $PNGCRUSH = `xcrun -f pngcrush`;
至:
my $PNGCRUSH = `/usr/bin/xcrun -f pngcrush`;
然后我终于在没有错误的情况下构建了项目并在Xcode中打开了它。
我有这个愚蠢的错误,花了两天时间来确定。 我准备降级Xcode,并想再试一次。 最后钉了下来。
症状:最简单的项目不会从Qt Creator构建。 我得到的错误:CopyPNG失败或沿线的东西和提示’-f’未知参数。
原因: xcrun从我可以看到的终端获取-f和-find,但它不喜欢脚本copypng中的-f。 (顺便说一下,copypng是一个perl脚本。)
解决方案:打开文件/Applications/Xcode.app/Contents/Developer/usr/bin/copypng
并查找
my $PNGCRUSH = `xcrun -f pngcrush`;
变成
my $PNGCRUSH = `xcrun -find pngcrush`;
PS:我对xcrun有路径问题,如果你有把它放在上面建议的整个路径上是好的。