[英]Xcode 12.5 fail resolving SwiftPackageDependency with .systemLibrary target on M1
帶有 M1 的 MBP 上的 Xcode 12.5 無法解析與 .systemLibrary 目標的包依賴關系。 在沒有 Rosseta 的情況下運行 Xcode。
該項目使用 2 個 spm 包進行設置。 它們都添加到項目 .xcworkspace 中,並且其中只有一個鏈接在應用程序中。 這兩個包都是本地依賴項。 A
包有B
包作為依賴, B
包有libgit2
作為 .systemLibrary 依賴。 然后,如果我打開項目,Xcode 找不到 pkg-config 並且無法解析 libgit2 依賴項。
如果我使用swift package generate-xcodeproj
生成 A pbxproj
,則不會發生這種情況,在這種情況下,項目解決得很好,我可以毫無問題地構建它。
A Package.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"]
),
]
)
B Package.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
文件進行了良好配置。
我檢查了pkg-config
是否已安裝,並且具有帶有pkg-config --list
的 libgit2 包信息另外我在 intel mac 上打開了該項目並且工作正常。
libgit2 由 brew 安裝。
感謝 NeoNach !! Xcode 只查看/opt/brew
和/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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.