CocoaPods不會生成xcworkspace
運行g(shù)em install cocoapods 更新cocoapods工具板熊,然后再執(zhí)行pod install
問題解決
解決CocoaPods慢的方案
http://www.reibang.com/p/c84c9a61e9fe
Spec相關(guān)
podspec文件解析
文章介紹了一些普通項目的配置方式,這里補充兩個小tip:
- 使用use_frameworks!造成的引用錯誤舀奶?
如果在Podfile中使用了use_frameworks!罗洗,那么cocopods會幫我們自動生成頭文件xxx-umbrella.h碌宴,這里面導(dǎo)入了所有我們在podspec中配置的所有公共頭文件(類似于pch文件)页慷,只要我們引用了這個文件中導(dǎo)入的頭文件(無論是什么類型的頭文件),就會引用整個模塊执庐,這就導(dǎo)致了如果私有庫中使用了C++的代碼酪耕,那么只要引用到相關(guān)的代碼,就會提示找不到文件轨淌。(如果調(diào)用方不使用use_frameworks就沒有這個問題迂烁,但我們不能強求別人對吧)
因此我們就需要將C++的文件配置成私有的頭文件,使用下面的代碼:
s.private_header_files = [
'.../**/*.{cpp,hpp,c}'
]
這樣就不會報錯了递鹉。
但是這樣會導(dǎo)致無法使用C++文件盟步,按照常規(guī)的操作,就需要修改到配置文件了躏结,如何用spec修改配置文件却盘,請看下面:
- 如何修改項目配置?
上面的例子中,我們想要修改Targets中的Header Search Paths來解決C++文件的使用問題黄橘,因此需要用到下面的代碼:
s.pod_target_xcconfig = { ///< 修改本模塊Target配置
'KEY' => 'Value',
}
s.user_target_xcconfig = { ///< 修改主工程Target配置
'KEY' => 'Value',
}
其中兆览,KEY
就是setting里的對應(yīng)key的全大寫+空格改為下劃線,如Header Search Paths
> 'HEADER_SEARCH_PATHS' 塞关,對應(yīng)的添加(使用時應(yīng)自行修改為對應(yīng)配置):
search_paths = [
#Podfile不使用use_frameworks搜索路徑
'$(PODS_ROOT)/Headers/Public/...',
'$(PODS_ROOT)/Headers/Private/...',
#Podfile使用use_frameworks庫內(nèi)搜索路徑
'$(PODS_ROOT)/.../Headers',
'$(PODS_ROOT)/.../PrivateHeaders',
//...
]
private_header_path = [
'${PODS_CONFIGURATION_BUILD_DIR}/.../xxx.framework/PrivateHeaders',
'$(PODS_ROOT)/Headers/Private/...',
]
s.pod_target_xcconfig = {
'CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES' => 'YES' ,
'HEADER_SEARCH_PATHS' => search_paths.join(' '),
}
s.user_target_xcconfig = {
'HEADER_SEARCH_PATHS' => private_header_path.join(' '),
}