Ios Package.swift与Xcode 11项目一起,如何同时使用迦太基和SPM?
我觉得自己被卡在迦太基世界和Swift Package Manager(SPM)世界之间,就像被困在炼狱中一样 我正在开发,到目前为止,我一直在使用迦太基作为依赖项。但是由于SPM最终可以与iOS一起使用,我觉得对于希望使用这个库的人来说,能够通过SPM将其包括进来将是一件非常棒的事情 然而,我碰到了一堵墙。我的一个依赖项,即与迦太基合作,但SPM支持被破坏 为了分发我的库,我需要一个Ios Package.swift与Xcode 11项目一起,如何同时使用迦太基和SPM?,ios,swift,xcode,carthage,swift-package-manager,Ios,Swift,Xcode,Carthage,Swift Package Manager,我觉得自己被卡在迦太基世界和Swift Package Manager(SPM)世界之间,就像被困在炼狱中一样 我正在开发,到目前为止,我一直在使用迦太基作为依赖项。但是由于SPM最终可以与iOS一起使用,我觉得对于希望使用这个库的人来说,能够通过SPM将其包括进来将是一件非常棒的事情 然而,我碰到了一堵墙。我的一个依赖项,即与迦太基合作,但SPM支持被破坏 为了分发我的库,我需要一个包.swift文件和一些其他标准(自述、源代码中的源文件和测试中的测试)。我还需要在所说的Package.swi
包.swift
文件和一些其他标准(自述、源代码中的源文件和测试中的测试)。我还需要在所说的Package.swift
文件中声明我的依赖项,以便SPM recursivley能够解析所有依赖项(当人们通过SPM安装我的库时)。这就是我被卡住的地方
因为我仍然在使用迦太基,所以我需要一个Xcode项目文件来设置这个迦太基依赖项。但是现在我的源文件无法导入SPM依赖项。他们没有找到。似乎我必须使用Xcode和包含SPM包依赖项。这不是我想要的,我想要我的包.swift
文件声明我的库使用的SPM包的相同版本。为了说明这一点,这个问题的产生是因为我需要一个Xcode项目,因为迦太基
所以我想也许我可以用迦太基构建BitcoinKit(就像我现在所做的那样),并将构建的二进制文件(.Carthage/build/iOS/BitcoinKit.framework
)包含在我的库中,在Package.swift
中引用它,但这不起作用,因为SPM(还?)不支持二进制文件()
那么我有什么选择呢?
1) 等到有人聪明地修复了BitcoinKit中损坏的SPM支持(我自己也尝试过,但失败了),然后删除我的Xcode项目文件,完成到仅SPM的转换,现在继续使用迦太基
2) 尝试在我的库中内部使用通过Xcode添加包依赖项
功能安装的SPM包,并手动将这些版本与我在包.swift中声明的版本同步。这行得通吗?呃,无论如何,这是个糟糕的解决办法
3) 希望在SPM支持的情况下,将通过迦太基构建的BitcoinKit.framework
作为二进制文件包含在内?什么时候可能需要一段时间
4) BitcoinKit也可以与CoCoapod一起使用,但我想这对我来说毫无意义,事实上更糟糕的是,因为CoCoapod创建了一个.xcworkspace
文件
5) 希望等到苹果公司(有人知道是否有任何计划吗?)做出更改,以便我们通过Package.Swift
文件包括Swift包,即使与Xcode项目文件一起使用?我们可以通过迦太基继续使用Bitcoinkit,只在一个地方声明我的SPM包,我猜SPM/Xcode/Swift将负责将依赖项集成到我的Xcode项目中,但通过Package.Swift
文件进行更新和管理
6) 任何其他替代方案,真正的解决方案?如果不考虑整个“让比特币套件与SPM一起工作”的话,我认为“链接迦太基预先构建的二进制文件”的想法听起来至少是一个临时解决方案
无法链接包清单中的二进制文件(目前),但您可以在构建时链接它:
使用swift build
从命令行构建SPM包时,如果要链接框架,可以使用-Xswiftc
或-Xlinker
链接二进制文件,以传递args-F path/to/bitcoinkit
。请记住,每个参数前面必须有一个交叉参数标志。
在Xcode中构建时,您应该能够使用.xcconfig
解决它,内容如下:
FRAMEWORK_SEARCH_PATHS = path/to/bitcoinkit
您可能需要对其进行一些调整,但我认为这应该会起作用,最坏的情况是由swift包生成的.xcodeproj
生成xcodeproj--xconfig覆盖myconfig.xconfigGitHub上的yenom/BitcoinKit中有一个WalleteExample。它附带了一个工作区和项目
我可以在我的包中包含带有SPM的yenom/BitcoinKit。swift,我不使用任何项目/工作区。正如一个说明,XCode 12出现了,您现在可以在包中链接一个二进制文件。