mirror of
https://github.com/yonaskolb/XcodeGen.git
synced 2026-03-18 20:02:25 +00:00
Merge pull request #93 from keith/ks/link-dependencies
Fix dependency framework/library linking
This commit is contained in:
@@ -19,6 +19,7 @@
|
||||
BF3862341101 /* MyFramework.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = FR2993497801 /* MyFramework.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
|
||||
BF5986511201 = {isa = PBXBuildFile; fileRef = FR6523263101 /* TestProject.app */; };
|
||||
BF6182896901 /* Result.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FR9215298301 /* Result.framework */; };
|
||||
BF7015992001 /* MyFramework.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FR2993497801 /* MyFramework.framework */; };
|
||||
BF9001417701 /* TestProjectTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = FR6877173101 /* TestProjectTests.swift */; };
|
||||
BF9155249601 /* FrameworkFile.swift in Sources */ = {isa = PBXBuildFile; fileRef = FR7078510801 /* FrameworkFile.swift */; };
|
||||
/* End PBXBuildFile section */
|
||||
@@ -80,6 +81,7 @@
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
BF7015992001 /* MyFramework.framework in Frameworks */,
|
||||
BF6182896901 /* Result.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
|
||||
@@ -47,7 +47,11 @@ extension PBXProductType {
|
||||
}
|
||||
|
||||
public var isFramework: Bool {
|
||||
return fileExtension == "framework"
|
||||
return self == .framework
|
||||
}
|
||||
|
||||
public var isLibrary: Bool {
|
||||
return self == .staticLibrary || self == .dynamicLibrary
|
||||
}
|
||||
|
||||
public var isExtension: Bool {
|
||||
|
||||
@@ -25,7 +25,7 @@ public class PBXProjGenerator {
|
||||
var variantGroupsByPath: [Path: PBXVariantGroup] = [:]
|
||||
|
||||
var targetNativeReferences: [String: String] = [:]
|
||||
var targetBuildFileReferences: [String: String] = [:]
|
||||
var targetBuildFiles: [String: PBXBuildFile] = [:]
|
||||
var targetFileReferences: [String: String] = [:]
|
||||
var topLevelGroups: [PBXGroup] = []
|
||||
var carthageFrameworksByPlatform: [String: [String]] = [:]
|
||||
@@ -93,7 +93,7 @@ public class PBXProjGenerator {
|
||||
|
||||
let buildFile = PBXBuildFile(reference: generateUUID(PBXBuildFile.self, fileReference.reference), fileRef: fileReference.reference)
|
||||
addObject(buildFile)
|
||||
targetBuildFileReferences[target.name] = buildFile.reference
|
||||
targetBuildFiles[target.name] = buildFile
|
||||
}
|
||||
|
||||
let targets = try spec.targets.map(generateTarget)
|
||||
@@ -250,11 +250,15 @@ public class PBXProjGenerator {
|
||||
addObject(targetDependency)
|
||||
dependencies.append(targetDependency.reference)
|
||||
|
||||
// don't bother linking a target dependency
|
||||
// let dependencyBuildFile = targetBuildFileReferences[dependencyTargetName]!
|
||||
// targetFrameworkBuildFiles.append(dependencyBuildFile)
|
||||
if dependencyTarget.type.isLibrary || dependencyTarget.type.isFramework {
|
||||
let dependencyBuildFile = targetBuildFiles[dependencyTargetName]!
|
||||
let buildFile = PBXBuildFile(reference: generateUUID(PBXBuildFile.self, dependencyBuildFile.reference + target.name), fileRef: dependencyBuildFile.fileRef)
|
||||
addObject(buildFile)
|
||||
targetFrameworkBuildFiles.append(buildFile.reference)
|
||||
}
|
||||
|
||||
if embed && !dependencyTarget.type.isLibrary {
|
||||
|
||||
if embed {
|
||||
let embedSettings = dependency.buildSettings
|
||||
let embedFile = PBXBuildFile(reference: generateUUID(PBXBuildFile.self, dependencyFileReference + target.name), fileRef: dependencyFileReference, settings: embedSettings)
|
||||
addObject(embedFile)
|
||||
|
||||
@@ -5,4 +5,5 @@ XCTMain([
|
||||
testCase(GeneratorTests.allTests),
|
||||
testCase(SpecLoadingTests.allTests),
|
||||
testCase(FixtureTests.allTests),
|
||||
testCase(ProjectSpecTests.allTests),
|
||||
])
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
import Spectre
|
||||
import XcodeGenKit
|
||||
import xcproj
|
||||
import ProjectSpec
|
||||
|
||||
func projectSpecTests() {
|
||||
|
||||
describe("ProjectSpec") {
|
||||
|
||||
let framework = Target(name: "MyFramework", type: .framework, platform: .iOS,
|
||||
settings: Settings(buildSettings: ["SETTING_2": "VALUE"]))
|
||||
let staticLibrary = Target(name: "MyStaticLibrary", type: .staticLibrary, platform: .iOS,
|
||||
settings: Settings(buildSettings: ["SETTING_2": "VALUE"]))
|
||||
let dynamicLibrary = Target(name: "MyDynamicLibrary", type: .dynamicLibrary, platform: .iOS,
|
||||
settings: Settings(buildSettings: ["SETTING_2": "VALUE"]))
|
||||
|
||||
$0.describe("Types") {
|
||||
$0.it("is a framework when it has the right extension") {
|
||||
try expect(framework.type.isFramework).to.beTrue()
|
||||
}
|
||||
|
||||
$0.it("is a library when it has the right type") {
|
||||
try expect(staticLibrary.type.isLibrary).to.beTrue()
|
||||
try expect(dynamicLibrary.type.isLibrary).to.beTrue()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -7,5 +7,6 @@ class XCodeGenKitTests: XCTestCase {
|
||||
projectGeneratorTests()
|
||||
specLoadingTests()
|
||||
fixtureTests()
|
||||
projectSpecTests()
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user