gpt4 book ai didi

ios - 如何使用 SPM 和 Xcode11 将二进制文件与库链接

转载 作者:行者123 更新时间:2023-12-05 07:18:24 25 4
gpt4 key购买 nike

我开始使用 xcode 11,我非常喜欢新功能 Swift Package Manger。我目前正在用它移动我的一些项目。

我的框架之一是围绕 C++ 库的 Swift 包装器。这些库是静态库,我无法更改它。我正在尝试配置 Package.swift,但没有成功。

我创建了 2 个目标,一个包含所有 c++ 和 objective-c++ 文件,另一个包含 Swift 文件。

我的包是这样的:

// swift-tools-version:5.1
import PackageDescription

let package = Package(
name: "MyFrameworkSDK",
platforms: [.iOS(.v9)],
products: [
.library(
name: "MyFrameworkSDK",
targets: ["MyFrameworkSDK"]
),
],
dependencies: [
.package(url: "https://github.com/Alamofire/Alamofire", from: "4.9.0"),
.package(url: "https://github.com/realm/realm-cocoa", from: "3.19.0"),
.package(url: "https://github.com/SwiftyJSON/SwiftyJSON", from: "5.0.0")
],
targets: [
.target(
name: "CPP",
path: "Sources/CPP",
cxxSettings: [
.headerSearchPath("signalProcessingSDK/include/SignalProcessing"),
.headerSearchPath("signalProcessingSDK/include/MyCPPSDK"),
.headerSearchPath("signalProcessingSDK/include"),
.headerSearchPath("CPPSignalProcessing/Codebridge"), // objective-c++ bridge
.headerSearchPath("CPPSignalProcessing/SignalProcessing.Cpp")
],
linkerSettings: [
.unsafeFlags(["-LsignalProcessingSDK/lib", "-llibAlgebra"]) // Thise line seems not to work in the client project
]
),
.target(
name: "MyFrameworkSDK",
dependencies: ["Alamofire", "RealmSwift", "SwiftyJSON", "CPP"],
path: "Sources/Swift"
)
],
swiftLanguageVersions: [.v5],
cxxLanguageStandard: .gnucxx11
)

我在客户端中收到以下错误:

d: warning: directory not found for option '-LsignalProcessingSDK/lib'
ld: library not found for -llibAlgebra

所以我的问题是:

1) “unsafeFlags”是用于将二进制文件与库链接的正确命令吗?如果不是,我应该使用什么?

2)给“unsafeFlags”的路径是相对于目标的绝对路径还是相对路径?

最佳答案

unsafeFlags 是传递任意标志的选项。但是您必须以“命令行”方式传递它们。

["-L", "signalProcessingSDK/lib", "-l", "libAlgebra"]

但我认为“相对路径”可能不是您的正确选择。

关于ios - 如何使用 SPM 和 Xcode11 将二进制文件与库链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58289018/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com