CocoaPodsポストインストールフックを介してOTHER_LDFLAGSを変更するにはどうすればよいですか?

JRG-開発者

私のプロジェクトでは、CocoaPodsとカスタムxcconfigファイルを使用しています。これまで、これによって問題が発生することはありませんでした#include。カスタム構成の最後、CocoaPodsで生成された構成を実行する必要がありました。

ただし、にOTHER_LDFLAGS基づいて条件付きで指定する必要があるという問題が発生しましたが、xcconfigこれを行う方法がわかりません。

最初に、OTHER_LDFLAGSこのように単純にログを記録しようとしましたが、フラグは実際にはログに記録されません。

post_install do |installer_representation|
  installer_representation.project.targets.each do |target|
    target.build_configurations.each do |config|      

      name = target.name
      puts "Target Found: #{name}"

      flags = config.build_settings['OTHER_LDFLAGS']
      puts "OTHER_LDFLAGS Found: #{flags}"
    end
  end
end

出力は次のようになります。

Target Found: Pods-ProjectName-DependencyName1
OTHER_LDFLAGS Found: # nothing here...?
Target Found: Pods-ProjectName-DependencyName2    
OTHER_LDFLAGS Found: # again nothing...
# etc...
Target Found: Pods-ProjectName  # Cool, this is the main target pod
OTHER_LDFLAGS Found: # ...

OTHER_LDFLAGSCocoaPodsのインストール後フックを介して実際に変更するにはどうすればよいですか?

mrvincenzo

私は同じ問題に出くわしました。最初に私OTHER_LDFLAGSは明白なことで修正しようとしました:

post_install do |installer|
    installer.pods_project.targets.each do |target|
        if target.name == "Pods-SomeTarget"
            puts "Updating #{target.name} OTHER_LDFLAGS"
            target.build_configurations.each do |config|
                config.build_settings['OTHER_LDFLAGS'] ||= ['$(inherited)']
                config.build_settings['OTHER_LDFLAGS'] << '-l"AFNetworking"'
            end
        end
    end
end

しかし、それは機能しませんでした。関連するxcconfigは変更を取得しませんでした。最終的に、うまく機能する回避策を見つけました。まず、post_intallフック内の関連するxcconfigファイルの内容を読み取り、変更して、書き戻します。

v1.0

post_install do |installer|
    installer.pods_project.targets.each do |target|
        if target.name == "Pods-SomeTarget"
            puts "Updating #{target.name} OTHER_LDFLAGS"
            target.build_configurations.each do |config|
                xcconfig_path = config.base_configuration_reference.real_path
                xcconfig = File.read(xcconfig_path)
                new_xcconfig = xcconfig.sub('OTHER_LDFLAGS = $(inherited)', 'OTHER_LDFLAGS = $(inherited) -l"AFNetworking"')
                File.open(xcconfig_path, "w") { |file| file << new_xcconfig }
            end
        end
    end
end

編集v1.0からの改善xcconfigStringコンテンツを直接操作する代わりに、xccconfigをbuild_configurationに読み込みHash、ハッシュを変更してからxcconfigにフラッシュします。

v1.5

post_install do |installer|
    installer.pods_project.targets.each do |target|
        if target.name == "Pods-SomeTarget"
            puts "Updating #{target.name} OTHER_LDFLAGS"
            target.build_configurations.each do |config|
                xcconfig_path = config.base_configuration_reference.real_path

                # read from xcconfig to build_settings dictionary
                build_settings = Hash[*File.read(xcconfig_path).lines.map{|x| x.split(/\s*=\s*/, 2)}.flatten]

                # modify OTHER_LDFLAGS
                build_settings['OTHER_LDFLAGS'] << '-l"AFNetworking"'

                # write build_settings dictionary to xcconfig
                build_settings.each do |key,value|
                  File.open(xcconfig_path, "a") {|file| file.puts key = value}
                end
            end
        end
    end
end

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

スニーカーネット(外部ファイル)を介して、Git変更セットをあるリポジトリから別のリポジトリにエクスポートするにはどうすればよいですか?

分類Dev

配列コンポーネントにアクセスしてVueでスタイルを変更するにはどうすればよいですか?

分類Dev

Openpyxlを介してxlsxファイルからPythonクラスにインポートするにはどうすればよいですか?

分類Dev

Kubernetesステートフルセット環境変数を介してPostgresqlmax_connections構成を変更するにはどうすればよいですか?

分類Dev

FileDialogを介してテキストファイルをインポートするようにこのコードを変更するにはどうすればよいですか?

分類Dev

composeを使用してインデックスのデフォルトとしてエクスポートするにはどうすればよいですか?

分類Dev

ドロップダウン ボックスを使用してスタイルシートを変更するにはどうすればよいですか?

分類Dev

コンボボックスを介してJavaでフレームのタイトルを設定するにはどうすればよいですか?

分類Dev

Cocoapods:インストールしたポッドのgitリポジトリアドレスを取得するにはどうすればよいですか?

分類Dev

vueコンポーネントのvuexストアを介してデータを自動的に変更するにはどうすればよいですか?

分類Dev

ヘッダーのないアップストリームフラットファイルの構造変更に続いて、新しいインポートコードを生成するにはどうすればよいですか?

分類Dev

毎日のファイルをインポートしてデータブリックスで実行するにはどうすればよいですか?

分類Dev

ブックマークをエクスポートしてテーブルにインポートするにはどうすればよいですか?

分類Dev

CPackを使用してインストールする実行可能ファイルの名前を変更するにはどうすればよいですか?

分類Dev

CDKを使用してEKSのデフォルトの容量インスタンスロールを変更するにはどうすればよいですか?

分類Dev

環境変数を使用してインストールのホームフォルダを変更するにはどうすればよいですか?

分類Dev

リフレクトを使用して構造体のスライスのフィールドを変更するにはどうすればよいですか?

分類Dev

バックエンドを介してWooCommerce注文で実行された変更のリストを取得するにはどうすればよいですか?

分類Dev

文字ベクトルを変更して、それを使用して別のオブジェクトにインデックスを付けるにはどうすればよいですか?(ラスターまたはデータフレーム)

分類Dev

特定のネットワークインターフェイスを介して送信するにはどうすればよいですか?

分類Dev

リモートデスクトップ(VNC)のデフォルトポートを変更するにはどうすればよいですか?

分類Dev

useStateフックを介して状態を更新する小道具としてコールバック関数を受け取る機能コンポーネントをテストするにはどうすればよいですか?

分類Dev

HttpClientを使用して、エンドポイントを変更するループでGETリクエストを送信し、レスポンスを返すにはどうすればよいですか?

分類Dev

インポートを変更せずにモジュールからスクリプトを実行するにはどうすればよいですか?

分類Dev

cocoapodsを使用してCharts.xcodeprojをインポートするにはどうすればよいですか?

分類Dev

このスクリプトを変更してすべてのファイルを再帰的に変換するにはどうすればよいですか?

分類Dev

ワインを介して64ビットUBUNTUでインターネットにアクセスするにはどうすればよいですか?

分類Dev

Windows Server 2008を介してインターネットにアクセスするように構成するにはどうすればよいですか?

分類Dev

パワーポイント2010でデフォルトのテキストの方向を変更するにはどうすればよいですか?

Related 関連記事

  1. 1

    スニーカーネット(外部ファイル)を介して、Git変更セットをあるリポジトリから別のリポジトリにエクスポートするにはどうすればよいですか?

  2. 2

    配列コンポーネントにアクセスしてVueでスタイルを変更するにはどうすればよいですか?

  3. 3

    Openpyxlを介してxlsxファイルからPythonクラスにインポートするにはどうすればよいですか?

  4. 4

    Kubernetesステートフルセット環境変数を介してPostgresqlmax_connections構成を変更するにはどうすればよいですか?

  5. 5

    FileDialogを介してテキストファイルをインポートするようにこのコードを変更するにはどうすればよいですか?

  6. 6

    composeを使用してインデックスのデフォルトとしてエクスポートするにはどうすればよいですか?

  7. 7

    ドロップダウン ボックスを使用してスタイルシートを変更するにはどうすればよいですか?

  8. 8

    コンボボックスを介してJavaでフレームのタイトルを設定するにはどうすればよいですか?

  9. 9

    Cocoapods:インストールしたポッドのgitリポジトリアドレスを取得するにはどうすればよいですか?

  10. 10

    vueコンポーネントのvuexストアを介してデータを自動的に変更するにはどうすればよいですか?

  11. 11

    ヘッダーのないアップストリームフラットファイルの構造変更に続いて、新しいインポートコードを生成するにはどうすればよいですか?

  12. 12

    毎日のファイルをインポートしてデータブリックスで実行するにはどうすればよいですか?

  13. 13

    ブックマークをエクスポートしてテーブルにインポートするにはどうすればよいですか?

  14. 14

    CPackを使用してインストールする実行可能ファイルの名前を変更するにはどうすればよいですか?

  15. 15

    CDKを使用してEKSのデフォルトの容量インスタンスロールを変更するにはどうすればよいですか?

  16. 16

    環境変数を使用してインストールのホームフォルダを変更するにはどうすればよいですか?

  17. 17

    リフレクトを使用して構造体のスライスのフィールドを変更するにはどうすればよいですか?

  18. 18

    バックエンドを介してWooCommerce注文で実行された変更のリストを取得するにはどうすればよいですか?

  19. 19

    文字ベクトルを変更して、それを使用して別のオブジェクトにインデックスを付けるにはどうすればよいですか?(ラスターまたはデータフレーム)

  20. 20

    特定のネットワークインターフェイスを介して送信するにはどうすればよいですか?

  21. 21

    リモートデスクトップ(VNC)のデフォルトポートを変更するにはどうすればよいですか?

  22. 22

    useStateフックを介して状態を更新する小道具としてコールバック関数を受け取る機能コンポーネントをテストするにはどうすればよいですか?

  23. 23

    HttpClientを使用して、エンドポイントを変更するループでGETリクエストを送信し、レスポンスを返すにはどうすればよいですか?

  24. 24

    インポートを変更せずにモジュールからスクリプトを実行するにはどうすればよいですか?

  25. 25

    cocoapodsを使用してCharts.xcodeprojをインポートするにはどうすればよいですか?

  26. 26

    このスクリプトを変更してすべてのファイルを再帰的に変換するにはどうすればよいですか?

  27. 27

    ワインを介して64ビットUBUNTUでインターネットにアクセスするにはどうすればよいですか?

  28. 28

    Windows Server 2008を介してインターネットにアクセスするように構成するにはどうすればよいですか?

  29. 29

    パワーポイント2010でデフォルトのテキストの方向を変更するにはどうすればよいですか?

ホットタグ

アーカイブ