mirror of
https://github.com/yonaskolb/XcodeGen.git
synced 2024-09-20 00:58:04 +03:00
Stop linking dynamic frameworks to static libraries
This commit is contained in:
parent
2e53422f82
commit
d6832479e4
@ -436,7 +436,7 @@ public class PBXProjGenerator {
|
||||
dependencies.append(targetDependency.reference)
|
||||
|
||||
let dependecyLinkage = dependencyTarget.defaultLinkage
|
||||
let shouldLink = dependecyLinkage == .dynamic
|
||||
let shouldLink = (dependecyLinkage == .dynamic && target.type != .staticLibrary)
|
||||
|| (dependecyLinkage == .static && target.type.isExecutable)
|
||||
if dependency.link ?? shouldLink {
|
||||
let dependencyBuildFile = targetBuildFiles[dependencyTargetName]!
|
||||
@ -471,6 +471,8 @@ public class PBXProjGenerator {
|
||||
}
|
||||
|
||||
case .framework:
|
||||
guard target.type != .staticLibrary else { break }
|
||||
|
||||
let fileReference: String
|
||||
if dependency.implicit {
|
||||
fileReference = sourceGenerator.getFileReference(
|
||||
@ -504,6 +506,8 @@ public class PBXProjGenerator {
|
||||
}
|
||||
|
||||
case .carthage:
|
||||
guard target.type != .staticLibrary else { break }
|
||||
|
||||
var platformPath = Path(getCarthageBuildPath(platform: target.platform))
|
||||
var frameworkPath = platformPath + dependency.reference
|
||||
if frameworkPath.extension == nil {
|
||||
|
@ -274,10 +274,15 @@ class ProjectGeneratorTests: XCTestCase {
|
||||
// - framework: FrameworkA.framework
|
||||
// - framework: FrameworkB.framework
|
||||
// embed: false
|
||||
// iOSFrameworkZ:
|
||||
// dependencies: []
|
||||
// StaticLibrary:
|
||||
// dependencies: []
|
||||
// dependencies:
|
||||
// - target: iOSFrameworkZ
|
||||
// - framework: FrameworkZ.framework
|
||||
// - carthage: CarthageZ
|
||||
// ResourceBundle
|
||||
// dependencies: []
|
||||
// dependencies: []
|
||||
// iOSFrameworkA
|
||||
// dependencies:
|
||||
// - target: StaticLibrary
|
||||
@ -309,6 +314,11 @@ class ProjectGeneratorTests: XCTestCase {
|
||||
// # embed: true
|
||||
// # - target: StaticLibrary
|
||||
// # embed: false
|
||||
// # - framework: FrameworkZ.framework
|
||||
// # - target: iOSFrameworkZ
|
||||
// # embed: true
|
||||
// # - carthage: CarthageZ
|
||||
// # embed: false
|
||||
// # - carthage: CarthageA
|
||||
// # embed: true
|
||||
// # - framework: FrameworkC.framework
|
||||
@ -346,13 +356,26 @@ class ProjectGeneratorTests: XCTestCase {
|
||||
expectedEmbeddedFrameworks[app.name] = Set([
|
||||
"FrameworkA.framework",
|
||||
])
|
||||
|
||||
let iosFrameworkZ = Target(
|
||||
name: "iOSFrameworkZ",
|
||||
type: .framework,
|
||||
platform: .iOS,
|
||||
dependencies: []
|
||||
)
|
||||
expectedResourceFiles[iosFrameworkZ.name] = Set()
|
||||
expectedLinkedFiles[iosFrameworkZ.name] = Set()
|
||||
expectedEmbeddedFrameworks[iosFrameworkZ.name] = Set()
|
||||
|
||||
let staticLibrary = Target(
|
||||
name: "StaticLibrary",
|
||||
type: .staticLibrary,
|
||||
platform: .iOS,
|
||||
dependencies: [],
|
||||
transitivelyLinkDependencies: false
|
||||
dependencies: [
|
||||
Dependency(type: .target, reference: iosFrameworkZ.name),
|
||||
Dependency(type: .framework, reference: "FrameworkZ.framework"),
|
||||
Dependency(type: .carthage, reference: "CarthageZ"),
|
||||
]
|
||||
)
|
||||
expectedResourceFiles[staticLibrary.name] = Set()
|
||||
expectedLinkedFiles[staticLibrary.name] = Set([])
|
||||
@ -384,6 +407,9 @@ class ProjectGeneratorTests: XCTestCase {
|
||||
expectedResourceFiles[iosFrameworkA.name] = Set()
|
||||
expectedLinkedFiles[iosFrameworkA.name] = Set([
|
||||
"FrameworkC.framework",
|
||||
iosFrameworkZ.filename,
|
||||
"FrameworkZ.framework",
|
||||
"CarthageZ.framework",
|
||||
"CarthageA.framework",
|
||||
"CarthageB.framework",
|
||||
])
|
||||
@ -406,6 +432,9 @@ class ProjectGeneratorTests: XCTestCase {
|
||||
expectedResourceFiles[iosFrameworkB.name] = Set()
|
||||
expectedLinkedFiles[iosFrameworkB.name] = Set([
|
||||
iosFrameworkA.filename,
|
||||
iosFrameworkZ.filename,
|
||||
"FrameworkZ.framework",
|
||||
"CarthageZ.framework",
|
||||
"FrameworkC.framework",
|
||||
"FrameworkD.framework",
|
||||
"FrameworkE.framework",
|
||||
@ -433,6 +462,9 @@ class ProjectGeneratorTests: XCTestCase {
|
||||
expectedLinkedFiles[appTest.name] = Set([
|
||||
iosFrameworkA.filename,
|
||||
staticLibrary.filename,
|
||||
iosFrameworkZ.filename,
|
||||
"FrameworkZ.framework",
|
||||
"CarthageZ.framework",
|
||||
"FrameworkC.framework",
|
||||
iosFrameworkB.filename,
|
||||
"FrameworkD.framework",
|
||||
@ -441,6 +473,8 @@ class ProjectGeneratorTests: XCTestCase {
|
||||
])
|
||||
expectedEmbeddedFrameworks[appTest.name] = Set([
|
||||
iosFrameworkA.filename,
|
||||
iosFrameworkZ.filename,
|
||||
"FrameworkZ.framework",
|
||||
"FrameworkC.framework",
|
||||
iosFrameworkB.filename,
|
||||
"FrameworkD.framework",
|
||||
@ -458,7 +492,7 @@ class ProjectGeneratorTests: XCTestCase {
|
||||
iosFrameworkB.filename,
|
||||
])
|
||||
|
||||
let targets = [app, staticLibrary, resourceBundle, iosFrameworkA, iosFrameworkB, appTest, appTestWithoutTransitive]
|
||||
let targets = [app, iosFrameworkZ, staticLibrary, resourceBundle, iosFrameworkA, iosFrameworkB, appTest, appTestWithoutTransitive]
|
||||
|
||||
let project = Project(
|
||||
basePath: "",
|
||||
|
Loading…
Reference in New Issue
Block a user