Поддерживается ли XCBuildConfiguration#base_configuration_reference в xcodeproj?

При открытии проекта с использованием Xcodeproj::Project.open (гем xcodeproj 1.5.1), если в проекте есть baseConfigurationReferences, определенные для конфигураций сборки, XCBuildConfiguration#base_configuration_reference равно нулю. Например, при открытии проекта CocoaPods (CocoaPods добавляет xcconfig для каждой конфигурации сборки):

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 

А вот в проекте.pbxproj:

[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 */;

Есть ли другой способ загрузить файл, чтобы он был заполнен? Или, может быть, информация доступна где-то еще.

Обновлено 18 ноября 2017 г.

Сюжет сгущается. В рабочей области с интеграцией CocoaPods, если песочница Pods отсутствует, некоторые необходимые файлы xcconfig также будут отсутствовать. В некоторых случаях, особенно при использовании PBXNativeTarget#resolved_build_setting с resolve_against_xcconfig (второй аргумент) true, будет поднято Errno::ENOENT, показывающее путь в подах, который должен быть значением PBXBuildConfiguration#base_configuration_reference. Здесь возникает исключение:

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

Но если я спасу исключение и проверю #base_configuration_reference, это ноль.


person Jimmy Dee    schedule 07.09.2017    source источник


Ответы (1)


Сразу после обновления этого выше мне пришел ответ, и я подтвердил его. #base_configuration_reference может быть заполнен для цели, но не для проекта.

person Jimmy Dee    schedule 18.11.2017