1

如何修改OTHER_LDFLAGSpod install 步骤生成的 .xcconfig 中的字段?

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


我注意到在Pod-Target.debug.xcconfigpod install 的生成中,它有这个:OTHER_LDFLAGS = $(inherited) -framework "AFNetworking",如果我把它改成-weak_framework,它会做我想做的事。

这个Cocoapods 问题讨论了通过 post_install 挂钩执行此操作,但config.build_settings['OTHER_LDFLAGS']不写入该文件。


PS:我知道dlopen不推荐使用,但是我正在使用冲突的硬件库,我不能同时加载两个。

4

2 回答 2

2

将此代码添加到您的Podfilepod install再次运行

post_install do |installer|
    workDir = Dir.pwd
    xcconfigFilename = "#{workDir}/Pods/Target Support Files/Pods-Target/Pod-Target.debug.xcconfig"
    xcconfig = File.read(xcconfigFilename)
    newXcconfig = xcconfig.gsub(/-framework "AFNetworking"/, "-weak_framework \"AFNetworking\"")
    File.open(xcconfigFilename, "w") { |file| file << newXcconfig }
end
于 2019-03-11T10:20:09.663 回答
-1

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
于 2020-07-30T14:11:34.380 回答