首页 > 解决方案 > Xcode 12.5 无法使用 M1 上的 .systemLibrary 目标解析 SwiftPackageDependency

问题描述

带有 M1 的 MBP 上的 Xcode 12.5 无法解决与 .systemLibrary 目标的包依赖关系。在没有 Rosseta 的情况下运行 Xcode。

该项目设置有 2 个 spm 包。它们都添加到项目 .xcworkspace 中,并且只有其中一个链接到应用程序中。这两个包都是本地依赖项。 A包具有B包作为依赖项,B包具有libgit2作为 .systemLibrary 依赖项。然后,如果我打开项目,Xcode 找不到 pkg-config ,然后不解析 libgit2 依赖项。

pbxproj如果我用生成 A 就不会发生swift package generate-xcodeproj这种情况,在这种情况下,项目可以很好地解决,我可以毫无问题地构建它。

APackage.swift是:

// swift-tools-version:5.3
import PackageDescription

let package = Package(
    name: "A",
    platforms: [
        .macOS(.v11)
    ],
    products: [
        .library(
            name: "A",
            targets: ["A"]
        ),
    ],
    dependencies: [
        .package(path: "../B")
    ],
    targets: [
        .target(
            name: "A",
            dependencies: ["B"]
        ),
        .testTarget(
            name: "ATests",
            dependencies: ["A"]
        ),
    ]
)

BPackage.swift是:

// swift-tools-version:5.3
import PackageDescription

let package = Package(
    name: "B",
    platforms: [
        .macOS(.v11)
    ],
    products: [
        .library(
            name: "B",
            targets: ["B"]
        )
    ],
    dependencies: [],
    targets: [
        .systemLibrary(
            name: "Clibgit2",
            pkgConfig: "libgit2",
            providers: [
                .brew(["libgit2"])
            ]
        ),
        .target(
            name: "B",
            dependencies: [
                .target(name: "Clibgit2")
            ]
        ),
        .testTarget(
            name: "BTests",
            dependencies: ["B"]
        )
    ]
)

Clibgit2目标已经很好地配置了和module.modulemap文件shim.h

Xcode 错误

我检查了pkg-config是否已安装并具有 libgit2 包信息,pkg-config --list 另外我在英特尔 mac 上打开了项目并且工作正常。

libgit2 由 brew 安装。

标签: xcodehomebrewswift-package-managerpkg-config

解决方案


感谢 NeoNach!Xcode 只查看/opt/brewand /usr/local。M1 芯片的自制位置已打开,/opt/homebrew因此您可以使用com.apple.dt.Xcode.IDEHombrePrefixPath.

defaults write com.apple.dt.Xcode IDEHomebrewPrefixPath /opt/homebrew

推文参考:https ://twitter.com/NeoNacho/status/1412514541343166467


推荐阅读