Qt-creator示例无法为iphonesimulator

时间:2016-10-02 10:18:18

标签: ios xcode macos qt qt-creator

我已经在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模拟器'。

2 个答案:

答案 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有路径问题,如果你有这个问题,那就按照上面的建议做好整条路径。