मैं स्विफ्ट पैकेज मैनेजर में निर्भरता के रूप में एक स्थानीय पुस्तकालय (एक *.ए फ़ाइल) कैसे जोड़ सकता हूं?

मैं अपने पैकेज में जोड़ने का प्रयास करता हूं। स्विफ्ट:

dependencies: [
    // Dependencies declare other packages that this package depends on.,
    .package(url: "file://../otherdirectory/x86_64-apple-macosx/debug/libTest.a")
],

लेकिन जब मैं 'स्विफ्ट बिल्ड' चलाता हूं तो मुझे यह त्रुटि मिलती है

Package.swift:17:10: error: type of expression is ambiguous without more context
2
n179911 27 अगस्त 2020, 03:21

1 उत्तर

सबसे बढ़िया उत्तर

पहला: package डिपेंडेंसी केवल दूसरे पैकेज से लिंक हो सकती है!

यह स्विफ्ट 5.3 से binaryTarget के साथ संभव है, लेकिन आपको कई आवश्यक आर्किटेक्चर (arm64, x86_64) के साथ अपनी स्थिर लाइब्रेरी का निर्माण करना चाहिए और फिर अगले कमांड के साथ उनसे XCFramework बनाना चाहिए:

xcodebuild -create-xcframework \
    -library <path> [-headers <path>] \
    [-library <path> [-headers <path>]...] \
    -output <path>

उदाहरण:

xcodebuild -create-xcframework \
    -library build/simulators/libMyStaticLib.a \
    -library build/devices/libMyStaticLib.a \
    -output build/MyStaticLib.xcframework

फिर आप अपने पैकेज में नई बाइनरी लक्ष्य निर्भरता बना सकते हैं:

let package = Package(
   name: "MyPackage",
   ...
   targets: [
      .target(
         name: "MyPackage",
         dependencies: ["MyStaticLib"]
      ),
      .binaryTarget(name: "MyStaticLib", path: "path/MyStaticLib.xcframework"),
      ...
   ]

नोट: xcframework का पथ प्रोजेक्ट के मूल (पैकेज.स्विफ्ट के समान) से शुरू होता है।

3
iUrii 27 अगस्त 2020, 11:59