私はSpatialIite
をProj.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"と言っています。
これは間違いなくほとんどの場合うまくいきます。
ターゲットのビルド設定 - >その他のリンカフラグ - >ダブルクリックに行きます。新しい行に$(inherited)
を追加してください。
"... targetが...で定義されたGCC_PREPROCESSOR_DEFINITIONSビルド設定をオーバーライドする"という問題がある場合は、ターゲットビルド設定に$(inherited)を追加する必要があります - >プリプロセッサマクロ
あなたのビルド設定と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)を追加します。
私は端末でpodコマンドのこれら3つのエラーを見ました
pod install
[!] MY_APP [デバッグ/リリース]ターゲットはHEADER_SEARCH_PATHSを上書きします...
[!] MY_APP [Debug/Release]ターゲットはOTHER_LDFLAGSを上書きします...
[!] MY_APP [Debug/Release]ターゲットはGCC_PREPROCESSOR_DEFINITIONSを上書きします...
$(inherited)を追加することで、これら3つのエラーがすべてなくなります。
in プロジェクト - >ターゲット - >ビルド設定
そして今、コマンドはエラーを与えずに実行されます
pod install
プロジェクトでTarget -> Build Settings -> Other Linker Flags
を見つけ、Other Linker Flags
を選択し、delete
(Mac Keyboard)/ Backspace
(通常のキーボード)を押して設定を回復します。わたしにはできる。
例:
前
後に
pod install
を実行したときに同様の問題が発生しただけで、次のような警告/エラーが表示されました(CLANG_CXX_LIBRARY
に関連)。
[!] 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.
Build Settings
を見ることができるようにあなたのProject
を選択してください。Target
を選択してください(AppName
の下のTargets
)C++ Standard Library
を見つけます(おそらくBOLD - これは上書きされるという意味です)。この行はもう太字にしないでください。pod install
を実行すると、警告/エラーは表示されなくなります。
リンク時にXcodeからエラーが発生した場合ライブラリは-lPodsに対して見つからず、暗黙の依存関係を検出しません。
[プロダクト]> [スキームの編集]をクリックします。ビルドをクリックします。Podsスタティックライブラリを追加します。
下のリンクの最初の行は私の日を救いました:
プロジェクトのビルド設定からオプションに値を追加するには、値リストの先頭に$(継承)を付けます。
https://github.com/CocoaPods/CocoaPods/wiki/Creating-a-project-that-uses-CocoaPods#faq
また、ポッドファイルの先頭にこの行を挿入することを忘れないでください。
platform :iOS, '5.0'
$(inherited)を追加しましたが、プロジェクトはまだコンパイルされていませんでした。私にとっての問題は「アクティブ・アーキテクチャーのみのためのビルド」というフラグでしたが、それをYESに設定する必要がありました。