Qt-creator 示例无法为 iphonesimulator 构建
Qt-creator examples fail to build for iphonesimulator
我已经使用 Xcode 8 在 El Capitan 上成功安装了 Qt 5.7.0 和 Qt-creator 4.1.0。
我从 qt 修复了 ,现在我正在尝试构建 iphonesimulator 的示例之一。 None 其中有效果。所有这些都失败了,错误消息类型为:
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'.
时被覆盖
如有任何建议,我们将不胜感激。
编辑:
构建工具包警告以下问题:
"Device type is not supported by the Qt version"。设备类型是 'iOS simulator'.
我将 Xcode 更新到 8.0 版后遇到了同样的问题。
我的第一个错误是“项目错误:Xcode 设置不正确。您可能需要通过 运行 /usr/bin/xcodebuild 确认许可协议。"
为了解决这个问题,我创建了一个符号 link:
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 $ if /((.*?))/' | tail -n 1)"
至:
IPHONESIMULATOR_GENERIC_DESTINATION := "id=$(shell xcrun simctl list devices | grep -E 'iPhone|iPad' | grep -v unavailable | awk 'match ($[=13=], /\(([A-F0-9\-]*\))/ ) { print substr ($[=13=], 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 启动一个,这是一个符号 link。然后我改变了这个脚本中的路径
来自:
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 的路径问题,如果你有的话最好按照上面的建议放置整个路径。
我已经使用 Xcode 8 在 El Capitan 上成功安装了 Qt 5.7.0 和 Qt-creator 4.1.0。
我从 qt 修复了
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'.
时被覆盖如有任何建议,我们将不胜感激。
编辑: 构建工具包警告以下问题: "Device type is not supported by the Qt version"。设备类型是 'iOS simulator'.
我将 Xcode 更新到 8.0 版后遇到了同样的问题。
我的第一个错误是“项目错误:Xcode 设置不正确。您可能需要通过 运行 /usr/bin/xcodebuild 确认许可协议。" 为了解决这个问题,我创建了一个符号 link:
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 $ if /((.*?))/' | tail -n 1)"
至:
IPHONESIMULATOR_GENERIC_DESTINATION := "id=$(shell xcrun simctl list devices | grep -E 'iPhone|iPad' | grep -v unavailable | awk 'match ($[=13=], /\(([A-F0-9\-]*\))/ ) { print substr ($[=13=], 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 启动一个,这是一个符号 link。然后我改变了这个脚本中的路径 来自:
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 的路径问题,如果你有的话最好按照上面的建议放置整个路径。