首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用SPM和Xcode11将二进制文件与库链接起来

如何使用SPM和Xcode11将二进制文件与库链接起来
EN

Stack Overflow用户
提问于 2019-10-08 22:58:31
回答 1查看 1.1K关注 0票数 3

我开始使用Xcode11,我真的很喜欢Swift Package Manger的新特性。我目前正在用它移动我的一些项目。

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

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

我的包看起来像这样:

代码语言:javascript
复制
// 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
)

我在客户端得到以下错误:

代码语言:javascript
复制
d: warning: directory not found for option '-LsignalProcessingSDK/lib'
ld: library not found for -llibAlgebra

所以我的问题是:

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

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

EN

回答 1

Stack Overflow用户

发布于 2021-09-26 11:04:48

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

代码语言:javascript
复制
["-L", "signalProcessingSDK/lib", "-l", "libAlgebra"]

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58289018

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档