Added ProjectFormat enum with specific for each version fields (#1566)

* Added ProjectFormat enum with specific for each version fields

* Added ability to specify project format version via `projectFormat` option

---------

Co-authored-by: Yonas Kolb <yonaskolb@users.noreply.github.com>
This commit is contained in:
Vasily Anisimov
2026-03-05 13:46:56 +11:00
committed by GitHub
co-authored by Yonas Kolb
parent 167d11998a
commit decc743795
10 changed files with 62 additions and 10 deletions
+1 -1
View File
@@ -102,7 +102,7 @@ public class PBXProjGenerator {
name: project.name,
buildConfigurationList: buildConfigList,
compatibilityVersion: project.compatibilityVersion,
preferredProjectObjectVersion: Int(project.objectVersion),
preferredProjectObjectVersion: project.preferredProjectObjectVersion.map { Int($0) },
minimizedProjectReferenceProxies: project.minimizedProjectReferenceProxies,
mainGroup: mainGroup,
developmentRegion: developmentRegion
+37
View File
@@ -0,0 +1,37 @@
public extension ProjectFormat {
static let `default`: ProjectFormat = .xcode16_0
}
public enum ProjectFormat: String {
case xcode16_3
case xcode16_0
case xcode15_3
case xcode15_0
case xcode14_0
public var objectVersion: UInt {
switch self {
case .xcode16_3: 90
case .xcode16_0: 77
case .xcode15_3: 63
case .xcode15_0: 60
case .xcode14_0: 56
}
}
public var preferredProjectObjectVersion: UInt? {
switch self {
case .xcode16_3, .xcode16_0: objectVersion
case .xcode15_3, .xcode15_0, .xcode14_0: nil
}
}
public var compatibilityVersion: String? {
switch self {
case .xcode16_3, .xcode16_0: nil
case .xcode15_3: "Xcode 15.3"
case .xcode15_0: "Xcode 15.0"
case .xcode14_0: "Xcode 14.0"
}
}
}
+11 -3
View File
@@ -7,16 +7,24 @@ extension Project {
XCodeVersion.parse(options.xcodeVersion ?? "14.3")
}
public var projectFormat: ProjectFormat {
options.projectFormat.flatMap(ProjectFormat.init) ?? .default
}
var schemeVersion: String {
"1.7"
}
var compatibilityVersion: String {
"Xcode 14.0"
var compatibilityVersion: String? {
projectFormat.compatibilityVersion
}
var objectVersion: UInt {
77
projectFormat.objectVersion
}
var preferredProjectObjectVersion: UInt? {
projectFormat.preferredProjectObjectVersion
}
var minimizedProjectReferenceProxies: Int {