修改Cocoapods生成的.xcconfig文件的脚本

时间:2018-07-09 09:11:37

标签: ios cocoapods xcconfig

如何修改在pod安装步骤生成的.xcconfig中的OTHER_LDFLAGS字段?

最终目标:仅弱链接某些Pod,因此可以在运行时用dlopen加载它们。


我在pod安装时生成的Pod-Target.debug.xcconfig中注意到,它具有以下内容:OTHER_LDFLAGS = $(inherited) -framework "AFNetworking",如果我将其更改为-weak_framework,它可以完成我想做的事情。

This Cocoapods发行版讨论如何通过安装后挂钩来实现此目的,但是config.build_settings['OTHER_LDFLAGS']不会写入该文件。


PS:我知道不建议使用dlopen,但是我正在使用相互冲突的硬件库,在这些库中我无法同时加载两个。

2 个答案:

答案 0 :(得分:0)

将此代码添加到您的?- {html}. ... % (0 warnings) true. ?- html::get_url('http://releases.llvm.org/6.0.0/tools/clang/docs/ClangCommandLineReference.html', Terms). Terms = [element(html, [xmlns='http://www.w3.org/1999/xhtml'], [element(head, [], [element(meta, ['http-equiv'='Content-Type', content='text/html; charset=utf-8'], []), element(title, [], ['Clang command line argument reference — Clang 6 documentation']), element(link, [... = ...|...], []), element(link, [...|...], []), element(..., ..., ...)|...]), element(body, [role=document], [' ', element(div, [... = ...|...], [element(..., ..., ...)|...]), '\n ', element(..., ..., ...)|...])])]. 中,然后再次运行Podfile

pod install

答案 1 :(得分:0)

对VoidLess答案的一些修改,我认为这可能是有用的:

post_install do |installer|
    installer.pods_project.targets.each do |target|
        target.build_configurations.each do |config|
            xcconfig_path = config.base_configuration_reference.real_path
            xcconfig = File.read(xcconfig_path)
            xcconfig_mod = xcconfig.gsub(/-framework "YourFramework"/, "-weak_framework \"YourFramework\"")
            File.open(xcconfig_path, "w") { |file| file << xcconfig_mod }
        end
    end
end