Mục tiêu ghi đè lên cài đặt xây dựng `OTHER_LDFLAGS` được xác định trong` Pods / Pods.xcconfig


237

Tôi đã kết hợp SpatialIitevào một dự án Xcode sử dụng tệp tiêu đề từ Proj.4, chỉ một tiêu đề. Cả hai đều là dự án Xcode và có các mục tiêu tĩnh.

Tôi đang cố gắng di chuyển từ mô hình con git sang Cocoapods. Vì các mục tiêu tĩnh dường như khó sử dụng với Cocoapods, tôi chỉ muốn xây dựng dự án theo cách thông thường. Tôi đã làm podspec cho Proj.4. Sau khi viết podfile cho SpatialLitetôi nhận được các cảnh báo:

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

Tôi đã đọc vấn đề này nhưng tôi không biết các cảnh báo có ý nghĩa gì và tôi có thể làm gì để khắc phục nó.

Ngoài ra, khi tôi mở không gian làm việc cũng như chỉ mở dự án SpatiaLite, cả hai đều được nhắm mục tiêu đến Mac OSX 64, khi nó được cho là một dự án iOS. Podfile của tôi có nói "platform: ios".


2020 - cho bất cứ ai đấu tranh với vấn đề gây phiền nhiễu này. Nó thực sự chỉ được gây ra bởi (Bất ngờ! :)) facebook. Như đã giải thích TẠI ĐÂY, firebase.google.com/docs/auth/ios/firebaseui "Nếu bạn thích, bạn chỉ có thể thêm thành phần Auth và nhà cung cấp bạn muốn sử dụng ..." khi bạn loại bỏ tùy chọn facebook, không có vấn đề gì . : /
Fattie

Câu trả lời:


543

Điều này chắc chắn hoạt động hầu hết thời gian:

Chuyển đến Cài đặt bản dựng mục tiêu của bạn -> Cờ liên kết khác -> nhấp đúp. Thêm $(inherited)vào một dòng mới.

Nếu bạn gặp vấn đề với "... mục tiêu sẽ ghi đè cài đặt bản dựng GCC_PREPROCESSOR_DEFINITIONS được xác định trong ..." thì bạn phải thêm $ (được kế thừa) vào Cài đặt bản dựng mục tiêu -> Macro tiền xử lý


29
Tôi sẽ mở rộng câu trả lời này. Nếu bạn gặp vấn đề với "... mục tiêu ghi đè GCC_PREPROCESSOR_DEFINITIONScài đặt bản dựng được xác định trong ..." thì bạn phải thêm $ (được kế thừa) vào Cài đặt bản dựng mục tiêu của mình -> Macros tiền xử lý
Libor Zapletal

1
tôi nghi ngờ rằng "... mục tiêu sẽ ghi đè INSERT_YOUR_MISSING_DEFINITION ..." thì bạn phải thêm $ (được kế thừa) vào nó. Mặc dù kỳ lạ, xcode của tôi đã hiển thị $ (được kế thừa) một chút mờ nhạt như mặc định. tôi chỉnh sửa và chỉ đơn giản là thử lại điều tương tự. lỗi biến mất ..
joe

3
@joe Vẫn không làm việc cho tôi. Tôi đã thử tất cả các đề xuất này, nhưng khi tôi chạy lại cài đặt pod, các lỗi vẫn tồn tại. Tôi đã thực hiện các thay đổi cho cả các cờ liên kết khác và các macro tiền xử lý. Trong cả hai trường hợp, không có gì hiển thị cho đến khi bạn nhấp đúp vào từng dòng trong các cờ liên kết khác và macro tiền xử lý. Sau đó, bạn có thể thấy $ (được kế thừa) đã được thêm vào. Tôi đã cố gắng xóa và readding. Tôi đã thử đóng và mở lại xcode. Không có gì sửa các thông báo lỗi khi tôi gõ cài đặt pod.
JeffB6688

1
@msmq Đã lâu rồi, nhưng bạn có nhớ cách giải quyết mà bạn đã thử và làm cho nó hoạt động không? $(inherited)đã có sẵn ở dòng trên cùng nhưng nó không hoạt động đối với tôi: /
Kostas Dimakis

1
tôi đã thêm nó stil pod cài đặt ném cùng một lỗi.
rohitwtbs

75

Có một xung đột giữa cài đặt bản dựng của bạn và cài đặt bản dựng mặc định mà Cocoapods muốn. Để xem cài đặt bản dựng của Cocoapods, hãy xem (các) tệp .xcconfig trong Pods / Tệp hỗ trợ mục tiêu / Pods - $ {PRO DỰNAME} / trong dự án của bạn. Đối với tôi tập tin này chứa:

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

Nếu bạn hài lòng với cài đặt Cocoapods, hãy truy cập Build Settings cho dự án của bạn, tìm cài đặt phù hợp và nhấn phím Xoá. Điều này sẽ sử dụng cài đặt từ Cocoapods.

Mặt khác, nếu bạn có một cài đặt tùy chỉnh mà bạn cần sử dụng, thì hãy thêm $ (được kế thừa) vào cài đặt đó.


Tôi cũng gặp vấn đề này, tôi đã có thể loại bỏ -ObjC và nó đã khắc phục vấn đề này. Tuy nhiên, khi tôi cố gắng xây dựng dự án, tôi gặp lỗi cho thấy không thể tìm thấy thư viện pod cụ thể đích: "ld: thư viện không tìm thấy cho -lPods-MyProject". Bạn đã thấy một cái gì đó tương tự?
Roderic Campbell

3
Tôi lại gặp phải vấn đề này. Tôi không chắc là $ (được thừa kế) nghĩa là gì. Tôi thêm nó vào đâu?
huggie

@RodericCampbell Tôi đã thấy rằng việc xóa -ObjC khỏi dự án hoạt động tốt với tôi và tôi không thấy lỗi của bạn.
huggie

1
Hmm, nhưng tôi cần cờ -ObjC cho nó khi chạy vì tôi có các danh mục.
huggie

3
OTHER_LDFLAGS = Cờ được liên kết khác, HEADER_SEARCH_PATHS = Đường dẫn tìm kiếm tiêu đề, GCC_PREPROCESSOR_DEFINITIONS = Macro tiền xử lý. @kraftydevil, bạn đang cố xóa cài đặt nào?
phatmann

30

Tôi đã thấy 3 lỗi này cho lệnh pod trong terminal

pod install

[!] Mục tiêu MY_APP [Gỡ lỗi / Phát hành] sẽ ghi đè lên mục tiêu HEADER_SEARCH_PATHS ...
[!] Mục tiêu MY_APP [Gỡ lỗi / phát hành] sẽ ghi đè lên mục tiêu KHÁC / TÌM KIẾM ...
[!] Mục tiêu MY_APP [Gỡ lỗi / phát hành] .

Tất cả 3 lỗi này sẽ biến mất bằng cách thêm $ (được kế thừa) vào

  1. Đường dẫn tìm kiếm tiêu đề
  2. Cờ liên kết khác
  3. Macro tiền xử lý

trong Dự án -> Mục tiêu -> Cài đặt bản dựng

Và bây giờ lệnh sẽ chạy mà không đưa ra bất kỳ lỗi nào

pod install

Ở trên làm việc cho tôi, khi chỉ cần thay đổi cờ Other Linker Flagslà không đủ.
JaredH

21

Trong dự án của bạn, tìm Target -> Build Settings -> Other Linker Flags, chọn Other Linker Flags, nhấn delete(Bàn phím Mac) / Backspace(Bàn phím bình thường) để khôi phục cài đặt. Nó làm việc cho tôi.

Thí dụ:

Trước nhập mô tả hình ảnh ở đây

Sau nhập mô tả hình ảnh ở đây


1
chúng ta có xóa các cài đặt đã được đặt trong Cờ liên kết khác không? hoặc chúng ta giữ chúng và cũng thêm $ (kế thừa) ??
isJulian00

20

Chỉ gặp vấn đề tương tự khi tôi chạy pod install, tôi đã thấy các cảnh báo / lỗi sau (liên quan đến CLANG_CXX_LIBRARY):

Lỗi / Cảnh báo từ 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.

Sửa chữa

  1. Chọn của bạn Projectđể bạn có thể nhìn thấy Build Settings.
  2. Chọn Target( AppNamedưới Targets) của bạn
  3. Tìm C++ Standard Library(Nó có thể sẽ ở dạng ĐẬM - Điều này có nghĩa là nó bị ghi đè).
  4. Chọn Dòng (Vì vậy, nó được tô sáng màu xanh lam) và nhấn ⌘ + DELETE(Command + Backspace)

Dòng không được in đậm nữa và nếu bạn chạy pod installcác cảnh báo / lỗi sẽ biến mất.


Hỗ trợ thị giác

CLANG_CXX_LIBRARY Lỗi / Cảnh báo với Cocoapods


12

Nếu Xcode phàn nàn khi liên kết, ví dụ: Không tìm thấy Thư viện cho -lPods, thì nó không phát hiện được các phụ thuộc ngầm:

Đi đến Sản phẩm> Chỉnh sửa Lược đồ Nhấp vào Xây dựng Thêm thư viện tĩnh Pods Làm sạch và xây dựng lại


Tôi đã thử theo cách bạn đề xuất, nhưng nó không hiển thị các khung được cài đặt gần đây bằng tệp pod, bất kỳ đề xuất nào khác để sửa lỗi cờ liên kết. @Amit Saxena
Anilkumar iOS ReactNative

11

Đối với tôi vấn đề là với các bài kiểm tra mục tiêu của tôi. Tôi đã có $(inherited)cờ trong mục tiêu ứng dụng chính của mình.

Tôi đã thêm nó vào cờ MyerTests Other Linker. Sau đó khi tôi chạy pod installthì tin nhắn cảnh báo đã biến mất. nhập mô tả hình ảnh ở đây



6

Tôi đã thêm $ (kế thừa) nhưng dự án của tôi vẫn không được biên dịch. Đối với tôi, vấn đề là cờ "Chỉ xây dựng cho Kiến trúc hoạt động", tôi phải đặt nó thành CÓ.


Nếu dự án đang biên dịch, chúng ta có thể bỏ qua các cảnh báo không?
isJulian00
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.