我可以从 Qt Creator 向 xcodebuild 传递参数吗?
Posted
技术标签:
【中文标题】我可以从 Qt Creator 向 xcodebuild 传递参数吗?【英文标题】:Can I pass parameters to xcodebuild from Qt Creator? 【发布时间】:2017-09-26 10:17:26 【问题描述】:我的 Qt 和 Qt Creator 知识非常缺乏,我一直在尝试重建我们现有的应用程序以使其适用于 ios 11 的 64 位。
在为 iOS 构建发布版本时,我收到以下错误:
Check dependencies
Code Signing Error: No profiles for 'com.yourcompany.MYTESTAPP' were found: Xcode couldn't find any iOS App Development provisioning profiles matching 'com.yourcompany.MYTESTAPP'. Automatic signing is disabled and unable to generate a profile. To enable automatic signing, pass -allowProvisioningUpdates to xcodebuild.
Code Signing Error: Code signing is required for product type 'Application' in SDK 'iOS 11.0'
我尝试替换 Info.plist 中的 com.yourcompany,但似乎该文件是在每次构建时自动生成的,因此那里的更改被覆盖。还有其他方法可以用我们的域替换该域吗?
最简单的解决方案可能是按照错误提示执行并将-allowProvisioningUpdates
传递给 xcodebuild,但我不知道如何...另外我找不到任何有关该主题的有用文章。
我确实找到了this SO question,但是对于像我这样的初学者来说,那里的答案太高级了。我根据接受的答案尝试了以下方法,但没有任何效果:
contains(MYDEFINES, iOS)
QMAKE_CXXFLAGS += -allowProvisioningUpdates
编辑:知道我确实启用了“自动管理签名”Qt Creator 的构建设置可能很重要。而且我使用的是 Qt 5.9.1 和 Qt Creator 4.4.0。
【问题讨论】:
从终端手动执行命令时,xcodebuild build -project MYTESTAPP.xcodeproj -scheme MYTESTAPP -configuration Release -destination generic/platform=iOS -destination-timeout 1 -allowProvisioningUpdates
,它确实走得更远,但随后崩溃说The following build commands failed: Ld PORTA.build/Release-iphoneos/PORTA.build/Objects-normal/arm64/PORTA normal arm64
。我想我会调查一下
【参考方案1】:
我在使用 CI 构建时遇到了同样的问题。通过Makefile
及其包含的搜索,我发现您可以使用XCODEBUILD_FLAGS
变量将额外的标志传递给xcodebuild
。添加您的构建环境应该可以解决问题。
【讨论】:
那是您添加标志的地方(在 Qt 下的 Project 中,在标记为“构建环境”的设置列表中),但不幸的是这仍然不起作用。但是,它确实将错误更改为:“xcodebuild[62700:9920056] DVTPortal: Service '是的,您可以将数据从您的.pro
项目文件传递到您的Info.plist
。当您运行 QMake 时,这会构建您的 Xcode 项目文件并传递 Xcode 的设置。所以重要的是 QMake,而不是 Qt Creator。
不幸的是,存在更改和错误(例如QTBUG-70072),并且文档中也存在遗漏。
从 Qt 5.11.2 开始,以下是如何设置捆绑包(以及其他一些字段):
QMAKE_INFO_PLIST = path/to/your/Info.plist
QMAKE_TARGET_BUNDLE_PREFIX = com.yourcompany
QMAKE_BUNDLE = yourapp
QMAKE_IOS_DEPLOYMENT_TARGET = 11.0
QMAKE_APPLE_TARGETED_DEVICE_FAMILY = 1
如果您没有设置QMAKE_BUNDLE
,QMake 将使用您的TARGET
。在我的例子中,我的应用程序包 ID 都是小写的,而我的 TARGET
不是,并且包区分大小写。
QMAKE_IOS_DEPLOYMENT_TARGET
设置最低 iOS 版本。
QMAKE_APPLE_TARGETED_DEVICE_FAMILY
设置设备系列:1
用于 iPhone,2
用于 iPad,1,2
支持两者。
在您的Info.plist
中,您应该有:
<key>CFBundleIdentifier</key>
<string>$PRODUCT_BUNDLE_IDENTIFIER</string>
The official documentation relating to Info.plist is on the QMake Variables Reference page.
【讨论】:
以上是关于我可以从 Qt Creator 向 xcodebuild 传递参数吗?的主要内容,如果未能解决你的问题,请参考以下文章
在 Mac OS 下使用 Qt-creator 调试时如何进入 Qt 的源代码
QT Creator 主窗口 - 如何从菜单中更改每个元素的界面?