From be77dd1826fa7857f8955b65ef49f0b79942e098 Mon Sep 17 00:00:00 2001 From: Yonas Kolb Date: Mon, 24 Jul 2017 13:35:21 +0200 Subject: [PATCH] write targets in order --- Fixtures/TestProject/spec.xcodeproj/project.pbxproj | 2 +- Sources/XcodeGen/main.swift | 1 + Sources/XcodeGenKit/PBXProjGenerator.swift | 9 ++++----- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Fixtures/TestProject/spec.xcodeproj/project.pbxproj b/Fixtures/TestProject/spec.xcodeproj/project.pbxproj index 7ca86047..31d3cc62 100644 --- a/Fixtures/TestProject/spec.xcodeproj/project.pbxproj +++ b/Fixtures/TestProject/spec.xcodeproj/project.pbxproj @@ -204,8 +204,8 @@ ); mainGroup = OBJECT_53; targets = ( - OBJECT_8 /* MyFramework */, OBJECT_5 /* TestProject */, + OBJECT_8 /* MyFramework */, ); }; /* End PBXProject section */ diff --git a/Sources/XcodeGen/main.swift b/Sources/XcodeGen/main.swift index 99ea15dd..6bc8c008 100644 --- a/Sources/XcodeGen/main.swift +++ b/Sources/XcodeGen/main.swift @@ -51,6 +51,7 @@ func generate(spec: String, project: String?) { let projectGenerator = ProjectGenerator(spec: spec) let project = try projectGenerator.generate() print("Generated project") + print("Writing project") try project.write(path: projectPath, override: true) print("Wrote project to file \(projectPath.string)") } catch { diff --git a/Sources/XcodeGenKit/PBXProjGenerator.swift b/Sources/XcodeGenKit/PBXProjGenerator.swift index f3a2dfc1..dbc4b56c 100644 --- a/Sources/XcodeGenKit/PBXProjGenerator.swift +++ b/Sources/XcodeGenKit/PBXProjGenerator.swift @@ -67,9 +67,7 @@ public class PBXProjGenerator { targetBuildFileReferences[target.name] = buildFile.reference } - for target in spec.targets { - try generateTarget(target) - } + let targets = try spec.targets.map(generateTarget) let productGroup = PBXGroup(reference: id(), children: Set(targetFileReferences.values), sourceTree: .group, name: "Products") objects.append(.pbxGroup(productGroup)) @@ -79,7 +77,7 @@ public class PBXProjGenerator { objects.append(.pbxGroup(mainGroup)) let knownRegions: [String] = ["en", "Base"] - let pbxProjectRoot = PBXProject(reference: projectReference, buildConfigurationList: buildConfigList.reference, compatibilityVersion: "Xcode 3.2", mainGroup: mainGroup.reference, developmentRegion: "English", knownRegions: knownRegions, targets: Array(targetNativeReferences.values)) + let pbxProjectRoot = PBXProject(reference: projectReference, buildConfigurationList: buildConfigList.reference, compatibilityVersion: "Xcode 3.2", mainGroup: mainGroup.reference, developmentRegion: "English", knownRegions: knownRegions, targets: targets.referenceList) objects.append(.pbxProject(pbxProjectRoot)) return PBXProj(archiveVersion: 1, objectVersion: 46, rootObject: projectReference, objects: objects) @@ -102,7 +100,7 @@ public class PBXProjGenerator { return SourceFile(path: path, fileReference: fileReference, buildFile: buildFile) } - func generateTarget(_ target: Target) throws { + func generateTarget(_ target: Target) throws -> PBXNativeTarget { let source = spec.path.parent() + target.sources.first! //TODO: handle multiple sources //TODO: handle targets with shared sources @@ -190,6 +188,7 @@ public class PBXProjGenerator { productReference: fileReference, productType: target.type) objects.append(.pbxNativeTarget(nativeTarget)) + return nativeTarget } func getBuildPhaseForPath(_ path: Path) -> BuildPhase? {