web-dev-qa-db-ja.com

target ...は `Pods / Pods.xcconfigで定義されている` OTHER_LDFLAGS`ビルド設定を上書きします

私はSpatialIiteProj.4のヘッダーファイルを1つだけ使用するXcodeプロジェクトに組み込みました。どちらもXcodeプロジェクトであり、静的ターゲットを持っています。

私はgitサブモジュールからCocoapodsに移行しようとしています。静的ターゲットはCocoapodで使用するのが難しいように思われるので、プロジェクトを通常の方法でビルドしたいだけです。私はProj.4のpodspecを作りました。 SpatialLiteのpodfileを書いた後、私は警告を受けました:

[!] The target `SpatialiteIOS [Debug]` overrides the `OTHER_LDFLAGS` build setting defined in `Pods/Pods.xcconfig'.
    - Use the `$(inherited)` flag, or
    - Remove the build settings from the target.

[!] The target `SpatialiteIOS [Debug]` overrides the `HEADER_SEARCH_PATHS` build setting defined in `Pods/Pods.xcconfig'.
    - Use the `$(inherited)` flag, or
    - Remove the build settings from the target.

[!] The target `SpatialiteIOS [Debug - Release]` overrides the `OTHER_LDFLAGS` build setting defined in `Pods/Pods.xcconfig'.
    - Use the `$(inherited)` flag, or
    - Remove the build settings from the target.

[!] The target `SpatialiteIOS [Debug - Release]` overrides the `HEADER_SEARCH_PATHS` build setting defined in `Pods/Pods.xcconfig'.
    - Use the `$(inherited)` flag, or
    - Remove the build settings from the target.

私は 今号 と読みますが、この警告が何を意味するのか、そしてそれを修正するために私は何ができるのか全くわかりません。

また、SpatiaLiteプロジェクトを単独で開くのと同様にワークスペースを開くと、どちらもiOSプロジェクトであると想定されるMac OS X 64を対象としています。私のポッドファイルは "platform:ios"と言っています。

215
huggie

これは間違いなくほとんどの場合うまくいきます。

ターゲットのビルド設定 - >その他のリンカフラグ - >ダブルクリックに行きます。新しい行に$(inherited)を追加してください。

"... targetが...で定義されたGCC_PREPROCESSOR_DEFINITIONSビルド設定をオーバーライドする"という問題がある場合は、ターゲットビルド設定に$(inherited)を追加する必要があります - >プリプロセッサマクロ

490
Ankish Jain

あなたのビルド設定とCocoapodsが望むデフォルトのビルド設定との間に矛盾があります。 Cocoapodsのビルド設定を確認するには、プロジェクトのPods /ター​​ゲットサポートファイル/ Pods - $ {PROJECTNAME} /にある.xcconfigファイルを表示します。私にとっては、このファイルには以下が含まれています。

GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers" "${PODS_ROOT}/Headers/Commando"
OTHER_LDFLAGS = -ObjC -framework Foundation -framework QuartzCore -framework UIKit
PODS_ROOT = ${SRCROOT}/Pods

あなたがCocoapods設定に満足しているならば、それからあなたのプロジェクトのためのBuild Settingsに行き、適切な設定を見つけてDeleteキーを押してください。これはCocoapodsの設定を使います。

一方、使用する必要があるカスタム設定がある場合は、その設定に$(inherited)を追加します。

74
phatmann

私は端末でpodコマンドのこれら3つのエラーを見ました

pod install

[!] MY_APP [デバッグ/リリース]ターゲットはHEADER_SEARCH_PATHSを上書きします...
[!] MY_APP [Debug/Release]ターゲットはOTHER_LDFLAGSを上書きします...
[!] MY_APP [Debug/Release]ターゲットはGCC_PREPROCESSOR_DEFINITIONSを上書きします...

$(inherited)を追加することで、これら3つのエラーがすべてなくなります。

  1. ヘッダ検索パス
  2. その他のリンカーフラグ
  3. プリプロセッサマクロ

in プロジェクト - >ターゲット - >ビルド設定

そして今、コマンドはエラーを与えずに実行されます

pod install
25
zeeawan

プロジェクトでTarget -> Build Settings -> Other Linker Flagsを見つけ、Other Linker Flagsを選択し、delete(Mac Keyboard)/ Backspace(通常のキーボード)を押して設定を回復します。わたしにはできる。

例:

前 enter image description here

後に enter image description here

20
SamirChen

pod installを実行したときに同様の問題が発生しただけで、次のような警告/エラーが表示されました(CLANG_CXX_LIBRARYに関連)。

Cocoapodsからのエラー/警告

[!] The `Project [Debug]` target overrides the `CLANG_CXX_LIBRARY` build setting defined in `Pods/Target Support Files/Pods/Pods.debug.xcconfig'. This can lead to problems with the CocoaPods installation
    - Use the `$(inherited)` flag, or
    - Remove the build settings from the target.

[!] The `Project [Release]` target overrides the `CLANG_CXX_LIBRARY` build setting defined in `Pods/Target Support Files/Pods/Pods.release.xcconfig'. This can lead to problems with the CocoaPods installation
    - Use the `$(inherited)` flag, or
    - Remove the build settings from the target.

修正

  1. あなたがBuild Settingsを見ることができるようにあなたのProjectを選択してください。
  2. あなたのTargetを選択してください(AppNameの下のTargets
  3. C++ Standard Libraryを見つけます(おそらくBOLD - これは上書きされるという意味です)。
  4. ラインを選択し(それでそれは青で強調表示されています)、そして押します。 ⌘ + DELETE (コマンド+バックスペース)

この行はもう太字にしないでください。pod installを実行すると、警告/エラーは表示されなくなります。


視覚教材

CLANG_CXX_LIBRARY Error/Warning with Cocoapods

19
Anil

リンク時にXcodeからエラーが発生した場合ライブラリは-lPodsに対して見つからず、暗黙の依存関係を検出しません。

[プロダクト]> [スキームの編集]をクリックします。ビルドをクリックします。Podsスタティックライブラリを追加します。

12
Amit Saxena

私にとって問題は私のターゲットテストにありました。私のメインアプリターゲットには既に$(inherited)フラグがあります。

MyAppTests Other Linkerフラグに追加しました。その後、pod installを実行したときに警告メッセージが消えました。 enter image description here

7
Andreas Olsson

下のリンクの最初の行は私の日を救いました:

プロジェクトのビルド設定からオプションに値を追加するには、値リストの先頭に$(継承)を付けます。

https://github.com/CocoaPods/CocoaPods/wiki/Creating-a-project-that-uses-CocoaPods#faq

また、ポッドファイルの先頭にこの行を挿入することを忘れないでください。

platform :iOS, '5.0'
6

$(inherited)を追加しましたが、プロジェクトはまだコンパイルされていませんでした。私にとっての問題は「アクティブ・アーキテクチャーのみのためのビルド」というフラグでしたが、それをYESに設定する必要がありました。

5
sanjana