xcode - 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
。
我检查了pkg-config
是否已安装并具有 libgit2 包信息,pkg-config --list
另外我在英特尔 mac 上打开了项目并且工作正常。
libgit2 由 brew 安装。
解决方案
感谢 NeoNach!Xcode 只查看/opt/brew
and /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
推荐阅读
- ios - 无法将数据传递给下一个 ViewController 取决于 UIPickerView textField.text?
- kotlin - Kotlin 协程作用域定义
- c++ - 从抽象 DLL 接口类派生的类的 LNK4217 警告
- css - MS Edge HTML5 视频高度不正确并添加了很多白色填充
- azure-functions - 在同一虚拟网络上找到 Azure CosmosDB 和 Azure Function
- tfs - Team Foundation Server 复制文件路径
- c++ - 为什么其他电脑需要一些 DLL 文件,而我自己的不需要?
- powerbi - 如何使用 DAX 在 Power BI 中计算百分比
- swift - 如何在 Swift 中获取给定字符范围的完整行范围?
- node.js - 如何使用 CurL 从终端中的 GCS(谷歌云存储)URL 发送音频文件?