From b2a2a01da7e9a3d04d7adfa8ad5877f67b62dfbd Mon Sep 17 00:00:00 2001 From: Yonas Kolb Date: Wed, 15 Nov 2017 16:59:29 +0100 Subject: [PATCH] fix #87 --- Sources/XcodeGenKit/PBXProjGenerator.swift | 4 ++-- Sources/XcodeGenKit/SourceGenerator.swift | 13 +++++++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/Sources/XcodeGenKit/PBXProjGenerator.swift b/Sources/XcodeGenKit/PBXProjGenerator.swift index 4b7e3909..495f4fc7 100644 --- a/Sources/XcodeGenKit/PBXProjGenerator.swift +++ b/Sources/XcodeGenKit/PBXProjGenerator.swift @@ -67,7 +67,7 @@ public class PBXProjGenerator { let buildSettings = spec.getProjectBuildSettings(config: config) var baseConfigurationReference: String? if let configPath = spec.configFiles[config.name] { - baseConfigurationReference = sourceGenerator.getFileReference(path: spec.basePath + configPath, inPath: spec.basePath) + baseConfigurationReference = sourceGenerator.getContainedFileReference(path: spec.basePath + configPath) } return XCBuildConfiguration(reference: referenceGenerator.generate(XCBuildConfiguration.self, config.name), name: config.name, baseConfigurationReference: baseConfigurationReference, buildSettings: buildSettings) } @@ -225,7 +225,7 @@ public class PBXProjGenerator { var baseConfigurationReference: String? if let configPath = target.configFiles[config.name] { - baseConfigurationReference = sourceGenerator.getFileReference(path: spec.basePath + configPath, inPath: spec.basePath) + baseConfigurationReference = sourceGenerator.getContainedFileReference(path: spec.basePath + configPath) } return XCBuildConfiguration(reference: referenceGenerator.generate(XCBuildConfiguration.self, config.name + target.name), name: config.name, baseConfigurationReference: baseConfigurationReference, buildSettings: buildSettings) } diff --git a/Sources/XcodeGenKit/SourceGenerator.swift b/Sources/XcodeGenKit/SourceGenerator.swift index 27409708..c410915a 100644 --- a/Sources/XcodeGenKit/SourceGenerator.swift +++ b/Sources/XcodeGenKit/SourceGenerator.swift @@ -65,6 +65,19 @@ class SourceGenerator { return SourceFile(path: path, fileReference: fileReference, buildFile: buildFile, buildPhase: buildPhase) } + func getContainedFileReference(path: Path) -> String { + let createIntermediateGroups = spec.options.createIntermediateGroups + + let parentPath = path.parent() + let fileReference = getFileReference(path: path, inPath: parentPath) + let parentGroup = getGroup(path: parentPath, mergingChildren: [fileReference], createIntermediateGroups: createIntermediateGroups, isBaseGroup: true) + + if createIntermediateGroups { + createIntermediaGroups(for: parentGroup.reference, at: parentPath) + } + return fileReference + } + func getFileReference(path: Path, inPath: Path, name: String? = nil, sourceTree: PBXSourceTree = .group) -> String { if let fileReference = fileReferencesByPath[path] { return fileReference