我正在尝试使用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/