Как связать двоичный файл с библиотеками с SPM и Xcode11 - PullRequest
0 голосов
/ 08 октября 2019

Я начал использовать xcode 11, и мне очень нравится новая функция Swift Package Manger. В настоящее время я перевожу часть своего проекта вместе с ним.

Одна из моих платформ - это оболочка Swift вокруг библиотек c ++. Эти библиотеки являются статическими, и я не могу их изменить. Я пытаюсь настроить Package.swift, но у меня ничего не получилось.

Я создаю 2 цели: одну со всеми файлами c ++ и target-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, абсолютным или относительным к цели?

...