11

iOS プロジェクトでいくつかのカスタム構成で Cocoapods を使用しようとしています。
3 つ (Dev、Stage、Prod) があり、それぞれにいくつかのカスタムがありますGCC_PREPROCESSOR_DEFINITIONS。周りの人が私たち#include <path-to-pods.xcconfig>に提案しているのを見てきましたが、これは古い方法のようです。
Cocoapods0.39が構成に基づいて構成ファイルを自動的に生成し、それらをターゲットに自動的に追加するのを見てきました (これは良いことです)。これは、Podfile を作成する「新しい方法」について話しているこの記事
で も確認されています。問題は、これらのファイルに私の構成が含まれていないことです。と を使用しようとしましたが、成功しませんでした。Cocoapods + カスタム xcconfig ファイルを処理する正しい方法を知っている人はいますか?
xcodeprojlink_with

4

1 に答える 1

5

問題は、CocoaPods が xcconfig ファイルに基づいており、実際の変数を設定していることです。ただし、完全な構成が次のような xcconfig ファイルにある場合は、これらの値を使用することはできません。

#include "../Pods/Target Support Files/Pods-Demo/Pods-Demo.debug.xcconfig"
GCC_PREPROCESSOR_DEFINITIONS = ...

この場合GCC_PREPROCESSOR_DEFINITIONS、以前の値を上書きします。

これを解決する方法は次のとおりです。

  1. Podfile を更新して、post_install のプレフィックスでGCC_PREPROCESSOR_DEFINITIONS値を再定義します。PODS_

    post_install do |installer|
        work_dir = Dir.pwd
        Dir.glob("Pods/Target Support Files/Pods-Demo/*.xcconfig") do |xc_config_filename|
            full_path_name = "#{work_dir}/#{xc_config_filename}"
            xc_config = File.read(full_path_name)
            new_xc_config = new_xc_config.sub(/GCC_PREPROCESSOR_DEFINITIONS/, 'PODS_GCC_PREPROCESSOR_DEFINITIONS')
            File.open(full_path_name, 'w') { |file| file << new_xc_config }
        end
    
    end
    
  2. 次の方法で xcconfig ファイルを定義します。

    #include "../Pods/Target Support Files/Pods-Demo/Pods-Demo.debug.xcconfig"
    GCC_PREPROCESSOR_DEFINITIONS = $(PODS_GCC_PREPROCESSOR_DEFINITIONS) ...
    

この場合、カスタム値GCC_PREPROCESSOR_DEFINITIONSを含める必要があります。PODS_GCC_PREPROCESSOR_DEFINITIONS

于 2017-09-27T22:31:58.547 に答える