Skip to content

Commit ca31712

Browse files
committed
Embedding project reference targets in multiple targets
# Add dependencySet to avoid duplicate project reference targets
1 parent a4d7a61 commit ca31712

File tree

1 file changed

+11
-4
lines changed

1 file changed

+11
-4
lines changed

Diff for: Sources/XcodeGenKit/PBXProjGenerator.swift

+11-4
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ public class PBXProjGenerator {
1717

1818
var sourceGenerator: SourceGenerator!
1919

20+
var dependencySet: [String: (Target, PBXReferenceProxy)] = [:]
2021
var targetObjects: [String: PBXTarget] = [:]
2122
var targetAggregateObjects: [String: PBXAggregateTarget] = [:]
2223
var targetFileReferences: [String: PBXFileReference] = [:]
@@ -773,10 +774,16 @@ public class PBXProjGenerator {
773774
guard let dependencyTarget = project.getTarget(dependencyTargetName) else { continue }
774775
processTargetDependency(dependency, dependencyTarget: dependencyTarget, embedFileReference: targetFileReferences[dependencyTarget.name], platform: platform)
775776
case .project(let dependencyProjectName):
776-
let dependencyTargetName = dependencyTargetReference.name
777-
let (targetDependency, dependencyTarget, dependencyProductProxy) = try generateExternalTargetDependency(from: target.name, to: dependencyTargetName, in: dependencyProjectName, platform: target.platform)
778-
dependencies.append(targetDependency)
779-
processTargetDependency(dependency, dependencyTarget: dependencyTarget, embedFileReference: dependencyProductProxy, platform: platform)
777+
let id = "\(dependencyProjectName)_\(dependency.uniqueID)"
778+
if let dependencySet = dependencySet[id] {
779+
processTargetDependency(dependency, dependencyTarget: dependencySet.0, embedFileReference: dependencySet.1, platform: platform)
780+
} else {
781+
let dependencyTargetName = dependencyTargetReference.name
782+
let (targetDependency, dependencyTarget, dependencyProductProxy) = try generateExternalTargetDependency(from: target.name, to: dependencyTargetName, in: dependencyProjectName, platform: target.platform)
783+
dependencies.append(targetDependency)
784+
processTargetDependency(dependency, dependencyTarget: dependencyTarget, embedFileReference: dependencyProductProxy, platform: platform)
785+
dependencySet[id] = (dependencyTarget, dependencyProductProxy)
786+
}
780787
}
781788

782789
case .framework:

0 commit comments

Comments
 (0)