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