เป้าหมาย…แทนที่การตั้งค่าการสร้าง `OTHER_LDFLAGS` ที่กำหนดไว้ใน` Pods / Pods.xcconfig


237

ฉันได้รวมSpatialIiteเป็นโครงการ Xcode ซึ่งใช้ไฟล์ส่วนหัวProj.4เพียงส่วนหัวเดียว ทั้งสองเป็นโครงการ Xcode และมีเป้าหมายคงที่

ฉันพยายามที่จะโยกย้ายจาก submodule คอมไพล์เพื่อ Cocoapods เนื่องจากเป้าหมายแบบสแตติกดูเหมือนจะใช้งานยากกับ Cocoapods ฉันแค่ต้องการให้โครงการสร้างขึ้นตามปกติ ฉันทำ podspec Proj.4สำหรับ หลังจากเขียน podfile สำหรับ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.

ฉันอ่านปัญหานี้แล้วแต่ฉันไม่รู้จะรู้ตัวว่าคำเตือนหมายถึงอะไรและฉันจะแก้ไขได้อย่างไร

ปัญหานอกจากนี้เมื่อฉันเปิดพื้นที่ทำงานรวมถึงเปิดโครงการ SpatiaLite เพียงอย่างเดียวทั้งสองถูกกำหนดเป้าหมายเป็น Mac OSX 64 เมื่อมันน่าจะเป็นโครงการ iOS podfile ของฉันพูดว่า "แพลตฟอร์ม: ios"


2020 - สำหรับทุกคนที่ดิ้นรนกับปัญหาที่น่ารำคาญนี้ มันมีสาเหตุมาจาก (Surprise! :)) facebook เท่านั้น ตามที่อธิบายไว้ที่นี่firebase.google.com/docs/auth/ios/firebaseui "ถ้าคุณต้องการคุณสามารถเพิ่มเฉพาะองค์ประกอบรับรองความถูกต้องและผู้ให้บริการที่คุณต้องการใช้ ... "เมื่อคุณกำจัดตัวเลือก facebook ไม่มีปัญหา . : /
Fattie

คำตอบ:


543

วิธีนี้ใช้ได้ผลเกือบทุกครั้ง:

ไปที่การตั้งค่าการสร้างเป้าหมาย -> การตั้งค่าธงลิงเกอร์อื่น ๆ -> ดับเบิลคลิก เพิ่ม$(inherited)ในบรรทัดใหม่

หากคุณมีปัญหากับ "... target จะแทนที่ GCC_PREPROCESSOR_DEFINITIONS การตั้งค่าการสร้างที่กำหนดไว้ใน ... " ดังนั้นคุณต้องเพิ่ม $ (สืบทอด) ไปยังการตั้งค่า Build Build เป้าหมาย -> Mac Preprocessor


29
ฉันจะขยายคำตอบนี้ หากคุณมีปัญหากับ "... target จะแทนที่การGCC_PREPROCESSOR_DEFINITIONSตั้งค่าการสร้างที่กำหนดใน ... " คุณจะต้องเพิ่ม $ (สืบทอดมา) ไปยังการตั้งค่าการสร้างเป้าหมาย -> มาโครตัวประมวลผลล่วงหน้า
Libor Zapletal

1
ฉันสงสัยว่า "... เป้าหมายจะแทนที่ INSERT_YOUR_MISSING_DEFINITION ... " จากนั้นคุณจะต้องเพิ่ม $ (สืบทอดมา) ไป แม้ว่า xcode ของฉันจะแสดง $ (สืบทอดมา) เล็กน้อยเป็นค่าเริ่มต้น ฉันแก้ไขและพิมพ์ซ้ำสิ่งเดียวกัน ข้อผิดพลาดหายไป ..
joe

3
@ โจยังไม่ทำงานสำหรับฉัน ฉันลองคำแนะนำเหล่านี้ทั้งหมด แต่เมื่อฉันติดตั้ง pod อีกครั้งข้อผิดพลาดยังคงมีอยู่ ฉันได้ทำการเปลี่ยนแปลงทั้งค่าลิงเกอร์ลิงเกอร์และมาโครตัวประมวลผลล่วงหน้า ในทั้งสองกรณีจะไม่มีสิ่งใดแสดงจนกว่าคุณจะคลิกสองครั้งที่แต่ละบรรทัดในแฟล็กเกอร์ลิงก์อื่น ๆ และมาโครตัวประมวลผลล่วงหน้า จากนั้นคุณจะเห็นว่ามีการเพิ่ม $ (สืบทอดมา) ฉันพยายามลบและอ่าน ฉันพยายามปิดและเปิด xcode อีกครั้ง ไม่มีอะไรแก้ไขข้อผิดพลาดเมื่อฉันพิมพ์ในการติดตั้ง pod
JeffB6688

1
@msmq มันใช้เวลานานแล้ว แต่คุณจำวิธีแก้ปัญหาที่คุณลองและทำให้มันใช้งานได้หรือไม่? $(inherited)มีอยู่แล้วที่ด้านบนบรรทัด แต่มันไม่ทำงานสำหรับฉัน: /
Kostas Dimakis

1
ฉันได้เพิ่มมันติดตั้งฝักรูปแบบพ่นข้อผิดพลาดเดียวกัน
rohitwtbs

75

มีข้อขัดแย้งระหว่างการตั้งค่าการสร้างและการตั้งค่าการสร้างเริ่มต้นที่ Cocoapods ต้องการ หากต้องการดูการตั้งค่าการสร้าง Cocoapods ให้ดูไฟล์. xcconfig ในไฟล์ Pods / Target Support / Pods - $ {PROJECTNAME} / ในโครงการของคุณ สำหรับฉันไฟล์นี้ประกอบด้วย:

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

ในทางกลับกันหากคุณมีการตั้งค่าแบบกำหนดเองที่คุณต้องใช้ให้เพิ่ม $ (สืบทอดมา) ไปที่การตั้งค่านั้น


ฉันมีปัญหานี้เช่นกันฉันสามารถลบ -ObjC และแก้ไขปัญหานี้ได้ อย่างไรก็ตามเมื่อฉันพยายามสร้างโครงการฉันได้รับข้อผิดพลาดที่แนะนำว่าไม่สามารถค้นหาไลบรารีของ pod เป้าหมายที่ระบุ: "ld: library ไม่พบสำหรับ -lPods-MyProject" คุณเห็นสิ่งที่คล้ายกันไหม
Roderic Campbell

3
ฉันพบสิ่งนี้อีกครั้ง ฉันไม่แน่ใจว่า $ (สืบทอด) หมายถึง ฉันจะเพิ่มที่ไหน
huggie

@RodericCampbell ฉันพบว่าการลบ -ObjC จากโครงการทำงานได้ดีสำหรับฉันและฉันไม่เห็นข้อผิดพลาดของคุณ
huggie

1
อืม แต่ฉันต้องการแฟล็ก -ObjC สำหรับรันไทม์เนื่องจากฉันได้รับหมวดหมู่
huggie

3
OTHER_LDFLAGS = ธงที่เชื่อมโยงอื่น ๆ , HEADER_SEARCH_PATHS = เส้นทางการค้นหาส่วนหัว, GCC_PREPROCESSOR_DEFINITIONS = มาโครตัวประมวลผลล่วงหน้า @kraftydevil คุณพยายามลบการตั้งค่าแบบใด
phatmann

30

ฉันเห็นข้อผิดพลาด 3 ข้อสำหรับคำสั่ง pod ในเทอร์มินัล

pod install

[!] เป้าหมาย MY_APP [Debug / Release] จะแทนที่ HEADER_SEARCH_PATHS ...
[!] เป้าหมาย MY_APP [Debug / Release] จะแทนที่ OTHER_LDFLAGS ...
[!] MY_APP [Debug / Release] .

ข้อผิดพลาด 3 ข้อเหล่านี้ทั้งหมดจะหายไปโดยเพิ่ม$ (สืบทอดมา)ไปที่

  1. เส้นทางการค้นหาส่วนหัว
  2. ธงลิงเกอร์อื่น ๆ
  3. มาโครตัวประมวลผลล่วงหน้า

ในโครงการ -> เป้าหมาย -> การตั้งค่าการสร้าง

และตอนนี้คำสั่งจะทำงานโดยไม่ให้ข้อผิดพลาดใด ๆ

pod install

ข้างต้นทำงานให้ฉันเมื่อเพียงแค่เปลี่ยนธงเพราะOther Linker Flagsไม่เพียงพอ
JaredH

21

ในโครงการของคุณค้นหาTarget -> Build Settings -> Other Linker FlagsเลือกOther Linker Flagsกดdelete(แป้นพิมพ์ Mac) / Backspace(แป้นพิมพ์ปกติ) เพื่อกู้คืนการตั้งค่า มันใช้งานได้สำหรับฉัน

ตัวอย่าง:

ก่อน ป้อนคำอธิบายรูปภาพที่นี่

หลังจาก ป้อนคำอธิบายรูปภาพที่นี่


1
เราจะลบการตั้งค่าที่มีอยู่แล้วใน Other Linker Flags ได้อย่างไร หรือว่าเราจะเก็บไว้และเพิ่ม $ (สืบทอด)?
isJulian00

20

เพิ่งมีปัญหาที่คล้ายกันเมื่อฉันวิ่ง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. เลือกของคุณเพื่อให้คุณสามารถดูProjectBuild Settings
  2. เลือกของคุณTarget( AppNameใต้Targets)
  3. ค้นหาC++ Standard Library(อาจเป็นBOLD - ซึ่งหมายความว่าจะถูกแทนที่)
  4. เลือกบรรทัด (เพื่อเน้นเป็นสีน้ำเงิน) แล้วกด⌘ + DELETE(Command + Backspace)

บรรทัดไม่ควรเป็นตัวหนาอีกต่อไปและหากคุณเรียกใช้pod installคำเตือน / ข้อผิดพลาดควรหายไป


Visual Aid

CLANG_CXX_LIBRARY ข้อผิดพลาด / คำเตือนด้วย Cocoapods


12

หาก Xcode บ่นเมื่อทำการเชื่อมโยงเช่นไม่พบ Library สำหรับ -lPods จะไม่ตรวจพบการพึ่งพาโดยนัย:

ไปที่ผลิตภัณฑ์> แก้ไขแบบแผนคลิกที่บิลด์สร้างไลบรารีแบบคงที่ของพ็อดที่สะอาดแล้วสร้างใหม่


ฉันลองวิธีที่คุณแนะนำ แต่มันไม่แสดงเฟรมเวิร์กที่ติดตั้งล่าสุดโดยไฟล์ pod คำแนะนำเพิ่มเติมใด ๆ เพื่อแก้ไขข้อผิดพลาดการตั้งค่าสถานะของลิงเกอร์ @Amit Saxena
Anilkumar iOS ReactNative

11

สำหรับฉันปัญหาอยู่ที่การทดสอบเป้าหมายของฉัน ฉันมีการ$(inherited)ตั้งค่าสถานะในเป้าหมายหลักของแอปแล้ว

ฉันเพิ่มลงใน MyAppTests Other Linker flag หลังจากนั้นเมื่อฉันวิ่งpod installข้อความเตือนก็หายไป ป้อนคำอธิบายรูปภาพที่นี่


6

ลิงค์บรรทัดแรกด้านล่างบันทึกวันของฉัน:

ในการเพิ่มค่าให้กับตัวเลือกจากการตั้งค่าการสร้างโครงการของคุณให้เพิ่มรายการค่าด้วย $ (สืบทอดมา)

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

นอกจากนี้อย่าลืมที่จะแทรกบรรทัดนี้ที่จุดเริ่มต้นของไฟล์พ็อดของคุณ:

platform :iOS, '5.0'

6

ฉันเพิ่ม $ (สืบทอด) แต่โครงการของฉันยังไม่ได้รวบรวม สำหรับฉันปัญหาคือตั้งค่าสถานะ "สร้างสำหรับสถาปัตยกรรมที่ใช้งานเท่านั้น" ฉันต้องตั้งค่าเป็นใช่


หากโครงการกำลังรวบรวมเราสามารถเพิกเฉยต่อคำเตือนได้หรือไม่?
isJulian00
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.