Skip to content

Commit 4918081

Browse files
authored
Set CURRENT_PROJECT_VERSION to 1 in generated xcode project (#2851)
1 parent 8811078 commit 4918081

File tree

3 files changed

+13
-0
lines changed

3 files changed

+13
-0
lines changed

Sources/Xcodeproj/XcodeProjectModel.swift

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -354,6 +354,7 @@ public struct Xcode {
354354
public var CLANG_ENABLE_OBJC_ARC: String?
355355
public var COMBINE_HIDPI_IMAGES: String?
356356
public var COPY_PHASE_STRIP: String?
357+
public var CURRENT_PROJECT_VERSION: String?
357358
public var DEBUG_INFORMATION_FORMAT: String?
358359
public var DEFINES_MODULE: String?
359360
public var DYLIB_INSTALL_NAME_BASE: String?
@@ -400,6 +401,7 @@ public struct Xcode {
400401
CLANG_ENABLE_OBJC_ARC: String? = nil,
401402
COMBINE_HIDPI_IMAGES: String? = nil,
402403
COPY_PHASE_STRIP: String? = nil,
404+
CURRENT_PROJECT_VERSION: String? = nil,
403405
DEBUG_INFORMATION_FORMAT: String? = nil,
404406
DEFINES_MODULE: String? = nil,
405407
DYLIB_INSTALL_NAME_BASE: String? = nil,
@@ -445,6 +447,7 @@ public struct Xcode {
445447
self.CLANG_ENABLE_OBJC_ARC = CLANG_CXX_LANGUAGE_STANDARD
446448
self.COMBINE_HIDPI_IMAGES = COMBINE_HIDPI_IMAGES
447449
self.COPY_PHASE_STRIP = COPY_PHASE_STRIP
450+
self.CURRENT_PROJECT_VERSION = CURRENT_PROJECT_VERSION
448451
self.DEBUG_INFORMATION_FORMAT = DEBUG_INFORMATION_FORMAT
449452
self.DEFINES_MODULE = DEFINES_MODULE
450453
self.DYLIB_INSTALL_NAME_BASE = DYLIB_INSTALL_NAME_BASE

Sources/Xcodeproj/pbxproj.swift

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -448,6 +448,11 @@ public func xcodeProject(
448448

449449
let infoPlistFilePath = xcodeprojPath.appending(component: target.infoPlistFileName)
450450
targetSettings.common.INFOPLIST_FILE = infoPlistFilePath.relative(to: sourceRootDir).pathString
451+
// The generated Info.plist has $(CURRENT_PROJECT_VERSION) as value for the CFBundleVersion key.
452+
// CFBundleVersion is required for apps to e.g. be submitted to the app store.
453+
// So we need to set it to some valid value in the project settings.
454+
// TODO: Extract version from SPM target (see SR-4265 and SR-12926).
455+
targetSettings.common.CURRENT_PROJECT_VERSION = "1"
451456

452457
if target.type == .test {
453458
targetSettings.common.CLANG_ENABLE_MODULES = "YES"

Tests/XcodeprojTests/PackageGraphTests.swift

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,7 @@ class PackageGraphTests: XCTestCase {
123123
XCTAssertEqual(targetResult.target.buildSettings.debug.SWIFT_ACTIVE_COMPILATION_CONDITIONS, ["DMACOS"])
124124
XCTAssertNil(targetResult.target.buildSettings.release.SWIFT_ACTIVE_COMPILATION_CONDITIONS)
125125

126+
XCTAssertEqual(targetResult.commonBuildSettings.CURRENT_PROJECT_VERSION, "1")
126127
XCTAssertEqual(targetResult.commonBuildSettings.OTHER_CFLAGS?.first, "$(inherited)")
127128
XCTAssertEqual(targetResult.commonBuildSettings.OTHER_LDFLAGS?.first, "$(inherited)")
128129
XCTAssertEqual(targetResult.commonBuildSettings.OTHER_SWIFT_FLAGS?.first, "$(inherited)")
@@ -134,6 +135,7 @@ class PackageGraphTests: XCTestCase {
134135
result.check(target: "Bar") { targetResult in
135136
targetResult.check(productType: .framework)
136137
targetResult.check(dependencies: ["Foo"])
138+
XCTAssertEqual(targetResult.commonBuildSettings.CURRENT_PROJECT_VERSION, "1")
137139
XCTAssertEqual(targetResult.commonBuildSettings.LD_RUNPATH_SEARCH_PATHS ?? [], ["$(inherited)", "$(TOOLCHAIN_DIR)/usr/lib/swift/macosx"])
138140
XCTAssertEqual(targetResult.commonBuildSettings.OTHER_CFLAGS?.first, "$(inherited)")
139141
XCTAssertEqual(targetResult.commonBuildSettings.OTHER_LDFLAGS?.first, "$(inherited)")
@@ -145,6 +147,7 @@ class PackageGraphTests: XCTestCase {
145147
result.check(target: "Sea") { targetResult in
146148
targetResult.check(productType: .framework)
147149
targetResult.check(dependencies: ["Foo"])
150+
XCTAssertEqual(targetResult.commonBuildSettings.CURRENT_PROJECT_VERSION, "1")
148151
XCTAssertEqual(targetResult.commonBuildSettings.CLANG_ENABLE_MODULES, "YES")
149152
XCTAssertEqual(targetResult.commonBuildSettings.DEFINES_MODULE, "YES")
150153
XCTAssertEqual(targetResult.commonBuildSettings.MODULEMAP_FILE, nil)
@@ -159,6 +162,7 @@ class PackageGraphTests: XCTestCase {
159162
targetResult.check(productType: .framework)
160163
targetResult.check(dependencies: ["Foo"])
161164
XCTAssertNil(targetResult.commonBuildSettings.CLANG_ENABLE_MODULES)
165+
XCTAssertEqual(targetResult.commonBuildSettings.CURRENT_PROJECT_VERSION, "1")
162166
XCTAssertEqual(targetResult.commonBuildSettings.DEFINES_MODULE, "NO")
163167
XCTAssertEqual(targetResult.commonBuildSettings.MODULEMAP_FILE, nil)
164168
XCTAssertEqual(targetResult.commonBuildSettings.OTHER_CFLAGS?.first, "$(inherited)")
@@ -171,6 +175,7 @@ class PackageGraphTests: XCTestCase {
171175
result.check(target: "Sea3") { targetResult in
172176
targetResult.check(productType: .framework)
173177
XCTAssertNil(targetResult.commonBuildSettings.CLANG_ENABLE_MODULES)
178+
XCTAssertEqual(targetResult.commonBuildSettings.CURRENT_PROJECT_VERSION, "1")
174179
XCTAssertEqual(targetResult.commonBuildSettings.DEFINES_MODULE, "NO")
175180
XCTAssertEqual(targetResult.commonBuildSettings.MODULEMAP_FILE, nil)
176181
}

0 commit comments

Comments
 (0)