Tuist/XCode 无效的 Sentry 重新声明

问题描述 投票:0回答:1

所以我尝试使用 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)
            ]
        )
    ]
) 
swift sentry swift-package-manager tuist
1个回答
0
投票

这个问题可能已通过 Tuist 4 解决,它从 Dependency.swift 迁移到纯粹的 Package.swift。

但是如果您坚持使用旧版本的 Tuist,您可以在您提供的链接中看到答案。

您可以在 Dependency.swift 定义中为每个目标添加特定设置(也在 Package.swift 中) 在特定目标设置中设置

"USE_HEADERMAP": "YES"

© www.soinside.com 2019 - 2024. All rights reserved.