我正在尝试使用xcodebuild在工作区中构建多项目项目。 XCode构建工作空间时,它会自动将所有构建 Artifact 放置在DerivedData中的公共(public)目录中,以便每个项目都可以访问其依赖项。

如果我使用此命令:

xcodebuild -workspace myWorkspace.xcworkspace -schema builtIt -configuration Release

Eveything可以工作,但是 Artifact 被放置在通常的派生数据目录中。然后,我希望出现在可以从CI版本访问的特定目录中。所以我尝试了这个
xcodebuild -workspace myWorkspace.xcworkspace -schema builtIt -configuration Release SYMROOT=build/products OBJROOT=build/intermediates

但是xcodebuild失败,这句话
Details:  Failed to load dependencies output contents from ``/Users/d4rkf1br3/projects/dNodi/build/intermediates/dNodi.build/Debug-iphoneos/dNodi.build/StaticAnalyzer/normal/armv7/DNRootSelector.d''.
Error: Error Domain=NSCocoaErrorDomain Code=260 "The file “DNRootSelector.d” couldn’t be opened because there is no such file."
UserInfo=0x4012fea40 {NSFilePath=/Users/d4rkf1br3/projects/dNodi/build/intermediates/dNodi.build/Debug-iphoneos/dNodi.build/StaticAnalyzer/normal/armv7/DNRootSelector.d, NSUnderlyingError=0x4012fc240 "The operation couldn’t be completed. No such file or directory"}.
User info: {
    NSFilePath = "/Users/d4rkf1br3/projects/dNodi/build/intermediates/dNodi.build/Debug-iphoneos/dNodi.build/StaticAnalyzer/normal/armv7/DNRootSelector.d";
    NSUnderlyingError = "Error Domain=NSPOSIXErrorDomain Code=2 \"The operation couldn\U2019t be completed. No such file or directory\"";
}

问题似乎是xcodebuild不再为工作空间中的所有项目使用中央目录,而是将 Artifact 存储在每个项目中。因此,它无法定位正在编译的代码与其他项目中产生的 Artifact 之间的依赖关系。

有谁知道在命令行上设置的正确参数?

Xcode的构 build 置引用已有两年未更新,因此我不知道是否可以应用新的构 build 置。

最佳答案

我不确定这是否是一个新选项,但是xcodebuild的5.0版本有一个-derivedDataPath选项,该选项可让您指定希望所有构建产品都位于的目录。

例如,传递-derivedDataPath build会相对于您运行build的位置创建一个文件夹xcodebuild,您可以在类似于build/Build/Products/Release-iphoneos的子文件夹中找到您的应用程序。

文档:https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/xcodebuild.1.html

关于workspace - Xcodebuild'工作区并设置自定义构建路径,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11965040/

10-15 11:52