लक्ष्य ... `Pods / Pods.xcconfig में परिभाषित` OTHER_LDFLAGS` निर्माण सेटिंग को ओवरराइड करता है


237

मैंने SpatialIiteएक Xcode प्रोजेक्ट में शामिल किया है, जो एक हेडर फ़ाइल से Proj.4सिर्फ एक हेडर का उपयोग करता है । दोनों Xcode प्रोजेक्ट्स हैं और स्टैटिक टार्गेट हैं।

मैं गिट सबमॉड्यूल से कोकोपोड्स की ओर पलायन करने की कोशिश कर रहा हूं। चूंकि स्थिर लक्ष्यों को कोकोपोड्स के साथ उपयोग करना मुश्किल लगता है, इसलिए मैं केवल सामान्य तरीके से बनाया गया प्रोजेक्ट बनाना चाहता हूं। मैंने के लिए पॉडसेक बनाया Proj.4। पॉडफाइल लिखने के बाद SpatialLiteमुझे चेतावनी मिली:

[!] 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.

मैं इस मुद्दे को पढ़ता हूं, लेकिन चेतावनी का मतलब क्या है और इसे ठीक करने के लिए मैं क्या कर सकता हूं।

इसके अतिरिक्त समस्या यह है कि जब मैं कार्यक्षेत्र को खोलने के साथ-साथ स्पैटियालाइट परियोजना को भी खोल रहा हूं, तो दोनों को मैक ओएसएक्स 64 पर लक्षित किया जाता है, जब इसे आईओएस प्रोजेक्ट माना जाता है। मेरा पॉडफाइल "प्लेटफॉर्म: आईओएस" कहता है।


2020 - इस कष्टप्रद समस्या से जूझ रहे किसी के लिए। यह वास्तव में केवल (आश्चर्य! :)) फेसबुक के कारण होता है। जैसा कि यहाँ बताया गया है, firebase.google.com/docs/auth/ios/firebaseui "यदि आप चाहें, तो आप केवल उस प्रामाणिक घटक और उन प्रदाताओं को जोड़ सकते हैं, जिनका आप उपयोग करना चाहते हैं ..." एक बार जब आप facebook विकल्प को समाप्त कर देते हैं, तो कोई समस्या नहीं है । : /
फेटी

जवाबों:


543

यह निश्चित रूप से ज्यादातर समय काम करता है:

अपने लक्ष्य पर जाएं सेटिंग बनाएँ -> अन्य लिंकर झंडे -> डबल क्लिक करें। $(inherited)एक नई पंक्ति में जोड़ें ।

यदि आपके पास "... लक्ष्य के साथ समस्या है ... GCC_PREPROCESSOR_DEFINITIONS ओवरराइडिंग को परिभाषित करता है ..." तो आपको अपने लक्ष्य में $ (विरासत में मिला हुआ) सेटिंग्स सेट करना होगा -> प्रीप्रोसेसर मैक्रोज़


29
मैं इस उत्तर का विस्तार करूंगा। यदि आपके पास "... लक्ष्य के साथ समस्या है ... GCC_PREPROCESSOR_DEFINITIONSमें परिभाषित बिल्ड सेटिंग को ओवरराइड करता है ..." तो आपको अपने लक्ष्य में $ (विरासत में मिला हुआ) सेटिंग्स सेट करना होगा -> प्रीप्रोसेसर मैक्रोज़
लिबोर जैपलेटल

1
मुझे संदेह है कि "... लक्ष्य INSERT_YOUR_MISSING_DEFINITION को ओवरराइड करता है ..." तो आपको इसमें $ (विरासत में मिला हुआ) जोड़ना होगा। विचित्र रूप से, हालांकि, मेरा xcode डिफ़ॉल्ट रूप से $ (विरासत में मिला) थोड़ा बेहोश दिखा रहा था। मैंने संपादित किया और बस उसी चीज़ को पुनः प्राप्त किया। त्रुटि गायब हो गई ..
joe

3
@ जो अभी भी मेरे लिए काम नहीं कर रहा है। मैंने इन सभी सुझावों की कोशिश की, लेकिन जब मैं फिर से स्थापित करता हूं, तो त्रुटियां बनी रहती हैं। मैंने अन्य लिंकर झंडे और प्रीप्रोसेसर मैक्रोज़ दोनों में बदलाव किए। दोनों मामलों में, जब तक आप दूसरे लिंकर झंडे और प्रीप्रोसेसर मैक्रोज़ में से प्रत्येक पर डबल क्लिक नहीं करते, तब तक कुछ भी नहीं दिखाता है। फिर आप देख सकते हैं कि $ (विरासत में) जोड़ा गया है। मैंने हटाने और पढ़ने की कोशिश की। मैंने xcode को बंद करने और फिर से खोलने की कोशिश की। जब मैं पॉड इंस्टॉल में टाइप करता हूं तो कुछ भी त्रुटि संदेश ठीक नहीं करता है।
जेफ़बी ६६

1
@msmq अब एक लंबा समय हो गया है, लेकिन क्या आपको उस वर्कअराउंड को याद है जो आपने कोशिश की थी और यह काम कर रहा है? $(inherited)पहले से ही शीर्ष पंक्ति में है, लेकिन यह मेरे लिए काम नहीं करता है: /
कोस्टा डिमाकिस

1
मैंने इसे जोड़ा है स्टिल पॉड स्थापित वही त्रुटि फेंकता है।
रोहितवाट्स

75

आपकी बिल्ड सेटिंग्स और डिफ़ॉल्ट बिल्ड सेटिंग्स के बीच एक संघर्ष है जो कोकोपोड्स चाहते हैं। कोकोपोड्स सेटिंग का निर्माण देखने के लिए, अपने प्रोजेक्ट में पॉड्स / टारगेट सपोर्ट फाइल्स / पॉड्स - $ {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 से सेटिंग का उपयोग करेगा।

दूसरी ओर, यदि आपके पास एक कस्टम सेटिंग है जिसे आपको उपयोग करने की आवश्यकता है, तो उस सेटिंग में $ (विरासत में मिला हुआ) जोड़ें।


मुझे भी यह समस्या थी, मैं -ObjC को हटाने में सक्षम था और इस समस्या को ठीक कर दिया। हालाँकि, जब मैंने प्रोजेक्ट बनाने का प्रयास किया, तो मुझे यह सुझाव देते हुए एक त्रुटि मिली कि लक्ष्य विशिष्ट पॉड लाइब्रेरी नहीं मिल सकती है: "ld: पुस्तकालय -lPods-MyProject के लिए नहीं मिला"। क्या आपने भी कुछ ऐसा ही देखा?
रोड्रिक कैम्पबेल

3
मैं फिर से इसमें भाग रहा हूं। मुझे यकीन नहीं है $ (विरासत में मिला) का मतलब है। मैं इसे कहां जोड़ूं?
15

@RodericCampbell मैंने पाया है कि परियोजना से -ObjC को हटाना मेरे लिए ठीक काम करता है और मुझे आपकी त्रुटि दिखाई नहीं देती है।
2

1
हम्म, लेकिन मुझे इसके लिए -OjC ध्वज की आवश्यकता है, जब से मुझे श्रेणियां मिलीं।
हूगी

3
OTHER_LDFLAGS = अन्य लिंक किए गए झंडे, HEADER_SEARCH_PATHS = हैडर खोज पथ, GCC_PREPROCESSOR_DEFINITIONS = प्रीप्रोसेसर मैक्रोज़। @kraftydevil, आप किस सेटिंग को हटाने की कोशिश कर रहे हैं?
फतमान

30

मैंने टर्मिनल में पॉड कमांड के लिए इन 3 त्रुटियों को देखा है

pod install

[!] MY_APP [डीबग / रिलीज़] लक्ष्य HEADER_SEARCH_PHSHS ...
[!] MY_APP [डीबग / रिलीज़] लक्ष्य OTHER_LDFLAGAGER को ओवरराइड करता है ...
[!] MY_APP [डीबग / रिलीज़] लक्ष्य GCC_PREPROCOROR से आगे निकल जाता है! ।

इन सभी 3 त्रुटियों जोड़कर चला गया हो जाएगा $ (विरासत में मिला है) करने के लिए

  1. हैडर खोज पथ
  2. अन्य लिंकर झंडे
  3. प्रीप्रोसेसर मैक्रोज़

में परियोजना -> लक्ष्य -> सेटिंग्स बिल्ड

और अब कमांड बिना किसी त्रुटि के चलेगी

pod install

ऊपर मेरे लिए काम किया, जब बस के लिए झंडा बदलने के लिए Other Linker Flagsपर्याप्त नहीं था।
जेरेडएच

21

अपनी परियोजना में, सेटिंग को पुनर्प्राप्त करने के लिए ढूंढें Target -> Build Settings -> Other Linker Flags, चुनें Other Linker Flags, दबाएं delete(मैक कीबोर्ड) / Backspace(सामान्य कीबोर्ड)। इससे मेरा काम बनता है।

उदाहरण:

इससे पहले यहां छवि विवरण दर्ज करें

उपरांत यहां छवि विवरण दर्ज करें


1
क्या हम अन्य लिंकर फ्लैग्स में पहले से मौजूद सेटिंग्स को हटाते हैं? या क्या हम उन्हें रखते हैं और $ भी जोड़ते हैं (विरासत में मिला) ??
.Julian00

20

बस एक समान मुद्दा था जब मैं भाग गया था 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.

जोड़

  1. अपना चयन करें Projectताकि आप देख सकें Build Settings
  2. अपना Target( AppNameअंडर Targets) चुनें
  3. ढूंढें C++ Standard Library(यह संभवतः बोल्ड में होगा - इसका मतलब यह ओवरराइड है)।
  4. लाइन का चयन करें (इसलिए यह हाइलाइट किया गया नीला), और प्रेस ⌘ + DELETE(कमांड + बैकस्पेस)

लाइन को अब और बोल्ड नहीं किया जाना चाहिए और यदि आप pod installचेतावनी चलाते हैं / त्रुटियों को गायब हो जाना चाहिए था।


दृश्य सहायता

CLANG_CXX_LIBRARY त्रुटि / कोकोपोड्स के साथ चेतावनी


12

यदि लिंक करते समय Xcode शिकायत करता है, जैसे लाइब्रेरी -lPods के लिए नहीं मिला, तो यह निहित निर्भरता का पता नहीं लगाता है:

उत्पाद पर जाएं> योजना संपादित करें निर्माण पर क्लिक करें पोड्स स्थिर पुस्तकालय जोड़ें और फिर से निर्माण करें


मैंने आपके द्वारा सुझाए गए तरीके को आजमाया, लेकिन इसकी हाल की स्थापित रूपरेखाओं को पॉड फ़ाइल द्वारा नहीं दिखाया गया, लिंकर ध्वज त्रुटियों को ठीक करने के लिए कोई और सुझाव। @ अमित सक्सेना
अनिलकुमार आईओएस रिएक्टनेटिव

11

मेरे लिए समस्या मेरे लक्ष्य परीक्षणों के साथ थी। $(inherited)मेरे मुख्य ऐप लक्ष्य में पहले से ही झंडा था ।

मैंने इसे MyAppTests अन्य लिंकर झंडे में जोड़ा। उसके बाद जब मैं भागा pod installतो चेतावनी संदेश चला गया था। यहां छवि विवरण दर्ज करें


6

नीचे दी गई लिंक की पहली पंक्ति ने मेरा दिन बचाया:

अपनी परियोजना की निर्माण सेटिंग से विकल्पों में मूल्यों को जोड़ने के लिए, मूल्य सूची को $ (विरासत में मिला) के साथ पूर्व-निर्धारित करें।

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

इसके अलावा, अपनी पॉड फ़ाइल की शुरुआत में इस लाइन को डालना न भूलें:

platform :iOS, '5.0'

6

मैंने $ (विरासत में) जोड़ा लेकिन मेरी परियोजना अभी भी संकलित नहीं हो रही थी। मेरे लिए समस्या यह थी कि झंडा "केवल सक्रिय वास्तुकला के लिए निर्माण" था, मुझे इसे हाँ में सेट करना था।


अगर परियोजना संकलित हो रही है तो क्या हम सिर्फ चेतावनियों को अनदेखा कर सकते हैं?
isJulian00
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.