我试图将ccache集成到我的项目中,该项目不支持clang模块。所以我在我的主要xcode项目中禁用了clang模块,如下所示。
但是对于cocoapods生成的项目文件,默认情况下会启用clang模块。即使我更改此设置,cocoapods也会在下一个pod update
更改它。
有没有让pod知道我想在苹果推出clang模块之前回归旧行为?关闭CLANG_ENABLE_MODULES,并自动链接其他pod生成的静态库使用的系统框架,如AVFoundation,MapKit等
答案 0 :(得分:0)
你是中国开发者吗?你以前见过这篇文章吗? https://zhuanlan.zhihu.com/p/27584726
这是一个使用ccache
加速Xcode
构建过程的教程。它还提供了config
cocoapods
。
我在这里复制了代码,让那些不懂中文但遇到同样问题的人知道如何解决这个问题。
post_install do |installer_representation|
installer_representation.pods_project.targets.each do |target|
target.build_configurations.each do |config|
#关闭 Enable Modules (Translation:Close Enable Modules)
config.build_settings['CLANG_ENABLE_MODULES'] = 'NO'
# 在生成的 Pods 项目文件中加入 CC 参数,路径的值根据你自己的项目来修改(Translation: Add CC parameter to pods project. You can change the path to whatever you want.)
config.build_settings['CC'] = '$(PODS_ROOT)/../ccache-clang'
end
end
end
但此配置仅关闭CLANG_ENABLE_MODULES
。
据我所知,使用ccache
和cocoapods
时无法链接系统框架。
希望它有所帮助。
答案 1 :(得分:0)
如果您要创建自定义pod,请在您的podspec文件中编写如下内容,
Pod::Spec.new do |s|
# some configuration
s.pod_target_xcconfig = {
'OTHER_LDFLAGS' => '-lObjC', # if you created a category for a class from other lib
'CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES' => 'YES',
'CLANG_ENABLE_MODULES' => 'NO', # here is what you want
'CLANG_WARN_DOCUMENTATION_COMMENTS' => 'NO',
'GCC_C_LANGUAGE_STANDARD' => 'gnu17'
}
end