为什么 xcodebuild 在使用 xcworkspace 构建时需要设置指定方案?

why xcodebuild need set specify scheme when build with xcworkspace?

而在非工作区构建中,xcodebuild 可以在不设置任何特定方案的情况下构建吗?

xcodebuild -target dailybuildipa -configuration Debug -sdk iphoneos12.2

方案在项目构建和工作区构建之间有什么区别?

默认情况下,Workspace 不包含任何方案,而 xcodeproj 包含。当您通过 xcodeproj 或 workspace 构建时,您实际上是在所选方案下构建目标。

Xcode 项目: 处理单个项目及其依赖项。

工作区:处理一组项目及其依赖项。

以下 link 将阐明差异: https://developer.apple.com/library/archive/featuredarticles/XcodeConcepts/Concept-Workspace.html#//apple_ref/doc/uid/TP40009328-CH7-DontLinkElementID_1 *

"xcodebuild: error: If you specify a workspace then you must also specify a scheme"

抛出此错误是因为工作区对您要构建的方案一无所知。另一方面,每个项目都有一个用它创建的默认方案。 因此,xcodebuild -project *yourProject.xcproj*将触发默认方案或激活方案(在多个方案的情况下)

在此处阅读有关方案的信息: https://developer.apple.com/library/archive/featuredarticles/XcodeConcepts/Concept-Schemes.html#//apple_ref/doc/uid/TP40009328-CH8-SW1

选择构建应用程序的方案 - https://developer.apple.com/library/archive/documentation/ToolsLanguages/Conceptual/Xcode_Overview/BuildingYourApp.html#//apple_ref/doc/uid/TP40010215-CH53-SW1