Xcodebuild'ing工作区和设置自定义构建路径(Xcodebuild'ing

2019-06-27 01:20发布

我试图用xcodebuild ,以建立一个工作区中的多项目的项目。 当XCode中建立一个工作区,它会自动将所有建立在DerivedData公共目录的文物,使每个项目都可以访问它的依赖关系。

如果我用这个命令:

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

Eveything工作,但文物放置在平时得到的数据目录。 我希望再出现在我可以访问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联编不再使用工作区中的所有项目的中央目录,并存储在每个项目的假象来代替。 因此,它不能定位代码之间的依赖关系被编译并在其他项目中产生伪影。

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

Xcode的构建设置参考尚未更新两年,所以我不知道是否有新的版本设置,我可以申请。

Answer 1:

我不知道这是否是一个新的选择,但是5.0版本的xcodebuild有一个选项-derivedDataPath它允许您指定您希望所有构建产品在坐的目录。

例如,通过-derivedDataPath build创建该文件夹build相对位置运行xcodebuild的,你可以像一个子文件夹可预见的发现自己的应用build/Build/Products/Release-iphoneos

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



Answer 2:

到目前为止,我已经找到了最好的解决办法是使用CONFIGURATION_BUILD_DIR参数以绝对路径(例如/ tmp目录/ $ PROJECT /编译)。 像这样:

xcodebuild -scheme "scheme" -configuration Debug -sdk iphoneos clean build CONFIGURATION_BUILD_DIR=$ABSOLUTE_BUILD_PATH

我用的詹金斯在那儿,我有一个变量命名为$WORKSPACE 。 随着$WORKSPACE/build我的CONFIGURATION_BUILD_DIR我有一个解决方案,我很高兴。

相对路径似乎并没有像预期的那样工作。 我们应该提交错误报告。



Answer 3:

当我从建詹金斯CI工具项目中,我也遇到了这个问题。 我的主要项目依赖一个子项目。 我试图建立后续@ Chilloutman的解决方案是这样的:

xcodebuild -target TravelGuideMdd -sdk iphoneos -configuration DailyBuild clean build CONFIGURATION_BUILD_DIR=/Users/mobileserver/jenkins_home/jobs/TravelGuide-Buid-For-Me/workspace/build BUILD_DIR =/Users/mobileserver/jenkins_home/jobs/TravelGuide-Buid-For-Me/workspace/build

要么

xcodebuild -target TravelGuideMdd -sdk iphoneos -configuration DailyBuild clean build CONFIGURATION_BUILD_DIR=/Users/mobileserver/jenkins_home/jobs/TravelGuide-Buid-For-Me/workspace/build 

他们都出现错误Could not find iphoneos in /Users/mobileserver/jenkins_home/jobs/TravelGuide-Buid-For-Me/workspace/build

但我得到的成功终于用这样的:

xcodebuild -target TravelGuideMdd -sdk iphoneos6.1 -configuration DailyBuild clean build SYMROOT=/Users/mobileserver/jenkins_home/jobs/TravelGuide-Buid-For-Me/workspace/build 

即:设置一个绝对路径SYMROOT。



文章来源: Xcodebuild'ing a workspace and setting a custom build path