我已经在El Capitan上使用Xcode 8成功安装了Qt 5.7.0和Qt-creator 4.1.0。
我从qt修复了xcode sdk-version errors,现在我正在尝试为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模拟器'。
答案 0 :(得分:6)
将Xcode更新到8.0版后,我遇到了同样的问题。
我的第一个错误是" 项目错误:Xcode未正确设置。您可能需要运行/usr/bin/xcodebuild来确认许可协议。" 为了解决这个问题,我创建了一个符号链接:
cd /Applications/Xcode.app/Contents/Developer/usr/bin/
sudo ln -s xcodebuild xcrun
然后我收到错误" 项目错误:当前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中打开它。
答案 1 :(得分:2)
我有这个愚蠢的错误,花了两天时间来确定。我即将降级Xcode,并认为让我们再试一次。最后钉了下来。
<强>症状:强> 最简单的项目不会从Qt Creator构建。我会得到的错误:CopyPNG失败或沿线的某些内容和提示&#39; -f&#39;未知参数。
原因: 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有路径问题,如果你有这个问题,那就按照上面的建议做好整条路径。