用于更改 Xcode DerivedData 位置的命令行选项

Command line option to change Xcode DerivedData location

我知道使用 Xcode 更改 DerivedData 位置的方法(Preferences->Locations->DerivedData..)。

然而,我尝试构建的 Mac 位于远程位置,只能通过 ssh 访问。我想构建一个特定的项目,我想在其中保留 DerivedData 相对于项目的位置。

每当我使用 xcodebuild 构建项目时,文件最终会在 /Users/builduser/Library/Developer/Xcode/DerivedData 下生成,但我希望它们在 '$PROJECT/target/DerivedData'

什么命令行相当于通过 XCode 更改 DerivedData 位置设置?

Xcode UI 的 DerivedData 设置通过 -derivedDataPath 参数传递给 xcodebuild。来自 man xcodebuild:

-derivedDataPath path
   Overrides the folder that should be used for derived data when performing a build action on a scheme in a workspace.

虽然不清楚更改 DerivedData 路径的目标是什么,但您应该知道,您可以在应用的构建配置中调整一些额外的设置,以影响最终构建的部署位置。构建的阶段之一是 install 阶段,它可以将最终工件移到别处。可以在 'Deployment' 构建设置组下找到控制这些行为的设置。请参阅 DSTROOTINSTALL_PATHDEPLOYMENT_LOCATION,了解可能有助于重新组织产品部署位置的其他选项。

您可能应该在项目基础上设置它,但是如果您需要更改 Xcode 默认值而不去 UI:

~/Library/Preferences/com.apple.dt.Xcode.plist

下有一个plist文件

您可以通过PlistBuddy查看和更改内容:

/usr/libexec/PlistBuddy -c print ~/Library/Preferences/com.apple.dt.Xcode.plist and you can see the field: IDECustomDerivedDataLocation = DerivedData

如果没有设置,您可以使用 PlistBuddy 添加:

/usr/libexec/PlistBuddy -c "Add IDECustomDerivedDataLocation string DerivedData" ~/Library/Preferences/com.apple.dt.Xcode.plist