我有一个Xcode项目,有一个应用程序Target,然后是一些Swift包依赖项。然后,我在目标配置的常规选项卡的 Frameworks、Libraries 和 Embedded 内容部分中添加这些依赖项。在构建之后,这些依赖项将变成什么样的二进制格式,以及它们是静态还是动态地链接到主应用程序?有没有办法控制这个过程?我没有找到关于它的明确文件。
ecbunoof1#
链接取决于作者如何创建每个库。在Package.swift中,您应该检查特定SPM的方法library(name:type:targets:)。如果type参数存在,它将指定库类型和链接类型:.static或.dynamic,您可以在创建自己的SPM时指定类型,链接:Product.Library.LibraryType .否则,在大多数情况下,这个参数是避免和苹果说:用于确定如何链接到库的库的可选类型。保留此参数,以便Swift包管理器可以在静态或动态链接之间进行选择(推荐)。如果不支持这两种链接类型,请对此参数使用Product.Library.LibraryType.static或Product.Library.LibraryType.dynamic。范例:
Package.swift
type
.static
.dynamic
let package = Package(name: "Alamofire", platforms: [.macOS(.v10_12), .iOS(.v10), .tvOS(.v10), .watchOS(.v3)], products: [.library(name: "Alamofire", targets: ["Alamofire"])], targets: ...
静态类型示例:
let package = Package( name: "IGListKit", platforms: [ .iOS(.v9), .tvOS(.v9), .macOS(.v10_15), ], products: [ .library(name: "IGListDiffKit", type: .static , targets: ["IGListDiffKit"]), .library(name: "IGListKit", type: .static, targets: ["IGListKit"]) ], targets: ...
动态类型示例:
var products: [Product] = [ .library( name: "SwiftGodot", type: .dynamic, targets: ["SwiftGodot"]), .plugin(name: "CodeGeneratorPlugin", targets: ["CodeGeneratorPlugin"]),]
我找到了一些资源,以防LibraryType为nil,Xcode默认在将包链接到应用程序时构建静态库:Swift Package Manager dynamic library,WWDC NOTES: Creating Swift Packages .我建议在避免使用nil类型时依靠Apple文档,否则在需要特定链接类型时指定确切的LibraryType。这里有一些有用的链接,可以深入挖掘:SwiftPM and dynamic linking,PackageDescription .上面提到的是基于源代码的包依赖关系。如果你需要二进制依赖:Identifying binary dependencies,Distributing binary frameworks as Swift packages .我希望这些信息对你有帮助。
LibraryType
nil
1条答案
按热度按时间ecbunoof1#
链接取决于作者如何创建每个库。在
Package.swift
中,您应该检查特定SPM的方法library(name:type:targets:)。如果type
参数存在,它将指定库类型和链接类型:.static
或.dynamic
,您可以在创建自己的SPM时指定类型,链接:Product.Library.LibraryType .否则,在大多数情况下,这个参数是避免和苹果说:用于确定如何链接到库的库的可选类型。保留此参数,以便Swift包管理器可以在静态或动态链接之间进行选择(推荐)。如果不支持这两种链接类型,请对此参数使用Product.Library.LibraryType.static或Product.Library.LibraryType.dynamic。
范例:
静态类型示例:
动态类型示例:
我找到了一些资源,以防
LibraryType
为nil,Xcode默认在将包链接到应用程序时构建静态库:Swift Package Manager dynamic library,WWDC NOTES: Creating Swift Packages .我建议在避免使用
nil
类型时依靠Apple文档,否则在需要特定链接类型时指定确切的LibraryType
。这里有一些有用的链接,可以深入挖掘:SwiftPM and dynamic linking,PackageDescription .上面提到的是基于源代码的包依赖关系。如果你需要二进制依赖:Identifying binary dependencies,Distributing binary frameworks as Swift packages .我希望这些信息对你有帮助。