【问题标题】:Qt-creator examples fail to build for iphonesimulatorQt-creator 示例无法为 iphonesimulator 构建
【发布时间】:2017-02-10 11:24:05
【问题描述】:

我已经使用 Xcode 8 在 El Capitan 上成功安装了 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 模拟器”。

【问题讨论】:

    标签: ios xcode macos qt qt-creator


    【解决方案1】:

    我将 Xcode 更新到 8.0 版后遇到了同样的问题。

    我的第一个错误是“项目错误:Xcode 未正确设置。您可能需要通过运行 /usr/bin/xcodebuild 来确认许可协议。” 为了解决这个问题,我创建了一个符号链接:

    cd /Applications/Xcode.app/Contents/Developer/usr/bin/
    sudo ln -s xcodebuild xcrun
    

    然后我收到错误“Project ERROR: Current iphonesimulator SDK version (10.0) is too old. Please upgrade 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 中打开它。

    【讨论】:

    • 这是一个很好的答案!该死的Qt,这么多的担心......但是,我没有最后一个错误,Qt只是说Starting remote process. Run ended. :(
    • 顺便说一下,我可以成功运行生成的XCode项目。我猜,Qt 开发者意识到了这个问题:bugreports.qt.io/browse/QTCREATORBUG-16942
    【解决方案2】:

    我犯了这个愚蠢的错误,花了两天时间来确定。我正要降级 Xcode,想再试一次。终于敲定了。

    症状: 最简单的项目不会从 Qt Creator 构建。我会得到的错误:CopyPNG failed 或类似的东西和提示'-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 的路径有问题,如果你有,最好按照上面的建议放置整个路径。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-23
      • 1970-01-01
      • 1970-01-01
      • 2020-01-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多