xcodeproj中是否支持`XCBuildConfiguration#base_configuration_reference`?

时间:2017-09-07 18:58:06

标签: ruby rubygems cocoapods xcodeproj

使用for="no"(xcodeproj 1.5.1 gem)打开项目时,如果项目为构建配置定义了baseConfigurationReferences,则Xcodeproj::Project.open为零。例如,在打开CocoaPods项目时(CocoaPods为每个构建配置添加了一个xcconfig):

XCBuildConfiguration#base_configuration_reference

但是在project.pbxproj中:

2.4.1 :001 > require 'xcodeproj'
 => true 
2.4.1 :002 > p = Xcodeproj::Project.open "examples/ios/BranchPluginExample/BranchPluginExample.xcodeproj"
 => #<Xcodeproj::Project> path:`/Users/jdee/github/BranchMetrics/fastlane-plugin-branch/examples/ios/BranchPluginExample/BranchPluginExample.xcodeproj` UUID:`7B03D6141EA18B7F00AE01E7` 
2.4.1 :003 > p.build_configurations
 => [<XCBuildConfiguration name=`Debug` UUID=`7B03D62C1EA18B7F00AE01E7`>, <XCBuildConfiguration name=`Release` UUID=`7B03D62D1EA18B7F00AE01E7`>] 
2.4.1 :004 > p.build_configurations[0].base_configuration_reference
 => nil 
2.4.1 :005 > p.build_configurations[1].base_configuration_reference
 => nil 

是否有其他方法可以加载文件以便填充此文件?或者也许这些信息可以在其他地方获得。

2017-11-18更新

情节变浓。在具有CocoaPods集成的工作空间中,如果缺少Pods沙箱,则某些必需的xcconfigs也将丢失。在某些情况下,特别是当使用[jdee@Jimmy-Dees-MacBookPro fastlane-plugin-branch (master)]$ grep baseConfigurationReference examples/ios/BranchPluginExample/BranchPluginExample.xcodeproj/project.pbxproj baseConfigurationReference = A78993DA75A56A8B38F927FF /* Pods-BranchPluginExample.debug.xcconfig */; baseConfigurationReference = D3CC0ABC7F7C89663342D316 /* Pods-BranchPluginExample.release.xcconfig */; 和resolve_against_xcconfig(第二个arg)为true时,将引发PBXNativeTarget#resolved_build_setting,显示Pods下的路径名,该值应为Errno::ENOENT。这里引发了例外:

https://github.com/CocoaPods/Xcodeproj/blob/master/lib/xcodeproj/project/object/build_configuration.rb#L195

但如果我拯救了这个例外并检查了PBXBuildConfiguration#base_configuration_reference,那就没有了。

1 个答案:

答案 0 :(得分:0)

刚刚更新了上述内容后,答案就出现了,我已经确认了。 #base_configuration_reference可能会填充在目标上,但不会填充在项目中。