所以我尝试使用 Tuist 设置一个多模块应用程序,但无法构建它。
我收到一系列不同的错误
[已编辑]/Tuist/Dependencies/SwiftPackageManager/.build/checkouts/sentry-cocoa/Sources/Sentry/Public/SentryDefines.h:104:28 重新定义“SentryLogLevel”
我尝试了各种构建设置,以及干净的获取等。
看起来有些人在这个问题中遇到了类似的问题。
如您所见,我已尝试了推荐的设置,但无济于事。
这是 Dependency.swift:
var swiftPackageManagerDependencies = SwiftPackageManagerDependencies([
.remote(
url: "https://github.com/getsentry/sentry-cocoa.git",
requirement: .upToNextMajor(from: "8.19.0")
),
.remote(
url: "https://github.com/Alamofire/Alamofire.git",
requirement: .upToNextMajor(from: "5.8.1")
),
.remote(
url: "https://github.com/auth0/Auth0.swift",
requirement: .upToNextMajor(from: "2.5.0")
),
.remote(
url: "https://github.com/firebase/firebase-ios-sdk.git",
requirement: .upToNextMajor(from: "10.20.0")
)
]
)
let dependencies = Dependencies(
swiftPackageManager: swiftPackageManagerDependencies,
platforms: [.iOS]
)
Project.swift
import ProjectDescription
import ProjectDescriptionHelpers
let projectSettings: Settings = .settings(
base: [
"CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER": "NO",
"CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES": "YES",
"OTHER_SWIFT_FLAGS": "-Xcc -Wno-error=non-modular-include-in-framework-module"
]
)
let targetSettings: Settings = .settings(
base: [
"USE_HEADERMAP": "YES",
"OTHER_LDFLAGS": "-ObjC",
"HEADER_SEARCH_PATHS": ["$(inherited)",
"Tuist/Dependencies/SwiftPackageManager/.build/checkouts/sentry-cocoa/Sources/Sentry/**"]
]
)
let project = Project(
name: "CoreData",
// settings: projectSettings,
targets: [
Target(
name: "CoreData",
destinations: .iOS,
product: .framework,
bundleId: "domain.coredata",
sources: ["Sources/**"],
resources: ["Resources/**"],
dependencies: [
.external(name: "Alamofire", condition: nil),
.external(name: "Auth0", condition: nil),
.external(name: "FirebaseMessaging", condition: nil),
.external(name: "Sentry", condition: nil)
],
settings: targetSettings
),
Target(
name: "CoreDatatests",
destinations: .iOS,
product: .unitTests,
bundleId: "domain.coredata.tests",
sources: ["Tests/**"],
resources: ["Resources/**"],
dependencies: [
.target(name: "CoreData", condition: .none)
]
)
]
)
这个问题可能已通过 Tuist 4 解决,它从 Dependency.swift 迁移到纯粹的 Package.swift。
但是如果您坚持使用旧版本的 Tuist,您可以在您提供的链接中看到答案。
您可以在 Dependency.swift 定义中为每个目标添加特定设置(也在 Package.swift 中) 在特定目标设置中设置
"USE_HEADERMAP": "YES"