从pod框架访问父项目SWIFT_FLAGS / SWIFT_ACTIVE_COMPILATION_CONDITIONS

时间:2019-05-29 08:57:51

标签: cocoapods

我知道这不是很正确的做事方式,但是无论如何。

我的框架中有这段代码,可以从项目中设置current。但是我更喜欢无需直接设置即可完成此操作。

public extension Environment {
    static var current: Environment = {
        #if DEBUG
            return .debug
        #elseif CIT
            return .cit
        #elseif STAGING
            return .staging
        #elseif PRODUCTION
            return .production
        #elseif RELEASE
            return .release
        #else
            return .debug
        #endif
    }()
}

1 个答案:

答案 0 :(得分:0)

这是我在其他类似文章的帮助下提出的post_install挂钩。

在项目中填充SWIFT_ACTIVE_COMPILATION_CONDITIONS 并将下面的代码添加到Podfile。

Xcode 10。

post_install do |installer|

  require 'xcodeproj'
  project_path = 'Test.xcodeproj' # path to your xcode project
  project = Xcodeproj::Project.open(project_path)

  project.targets.each do |projectTarget|
    if projectTarget.name == 'Test' # name of the target in your main project containing the custom flags
      installer.pods_project.build_configurations.each do |podConfig|
        projectTarget.build_configurations.each do |projectConfig|
          if projectConfig.name == podConfig.name
            podConfig.build_settings["SWIFT_ACTIVE_COMPILATION_CONDITIONS"] ||= [projectConfig.build_settings["SWIFT_ACTIVE_COMPILATION_CONDITIONS"]]
          end
        end
      end
    end
  end

end