TL; DR:
如果您将CocoaPods
(:submodules
的一部分)设置为spec.source
,true
会做什么?
完整版:
我以前的项目结构看起来像
Project
Linked To --> Core static library (submodule added as a subproject)
--> Linked To --> several dependent submodules (files added within subproject)
我现在正在转换到CocoaPods
进行依赖关系管理。
我的新(过渡)结构看起来像
Project
--> Depends on Core CocoaPod and few other CocoaPods
--> Core depends on several open-source libraries
--> Core also depends on a few submodules (in process of converting these)
我已经看到其他项目(例如AFNetworking)指定了他们的source
:
s.source = { :git => 'https://github.com/AFNetworking/AFNetworking.git', :tag => "2.1.0", :submodules => true }
如果您将CocoaPods
作为:submodules
传递,则true
会做什么?这是这个用例的正确设置吗?
我似乎无法在CocoaPods.org的任何地方找到此文档。
答案 0 :(得分:1)
这与具有子模块(See Git Submodules for more information on them)的git存储库有关。通常,当您克隆git存储库时,您需要执行以下操作:
git submodule init
git submodule update
下拉git存储库所依赖的子模块(例如,如果git库有另一个git库的引用,它可以将它添加为子模块,而不是将文件添加到自己的版本中 - 这意味着子模块可以更新和git库可以自动访问最新版本
我不确切知道cocoapods作为git clone进程的一部分做了什么,但我想它会在克隆存储库后运行这两个命令,以确保所有子模块的依赖性都是有效的。
FYI这个命令可以实现并更新所有子模块和它们所依赖的任何子模块 - 所以它可能是cocoapods使用的
git submodule update --init --recursive
此更改在0.12.0中引入:(请参阅changelog)
希望它有所帮助!
答案 1 :(得分:0)
这意味着pod包含git子模块,但是如果您通过Podfile中的git url使用pod,则它无效。在这种情况下,您再次需要在Podfile中指定:submodules => true
。
如果AFNetworking指定了这个参数,但实际上没有git子模块,那么它只是一个错误。
如果您依赖其他pod,请改用依赖项参数。