Target ... mengesampingkan pengaturan bangunan `OTHER_LDFLAGS` yang ditentukan dalam` Pods / Pods.xcconfig

237

Saya telah memasukkan SpatialIiteke dalam proyek Xcode yang menggunakan file header dari Proj.4, hanya satu header. Keduanya adalah proyek Xcode dan memiliki target statis.

Saya mencoba bermigrasi dari submitule git ke Cocoapods. Karena target statis tampaknya sulit digunakan dengan Cocoapods, saya hanya ingin proyek dibangun dengan cara biasa. Saya membuat podspec untuk Proj.4. Setelah menulis podfile untuk SpatialLitesaya mendapat peringatan:

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

Saya membaca masalah ini tetapi saya tidak mengerti apa arti peringatan itu dan apa yang bisa saya lakukan untuk memperbaikinya.

Selain itu masalah, ketika saya membuka ruang kerja serta membuka proyek SpatiaLite sendiri, keduanya ditargetkan untuk Mac OSX 64, ketika itu seharusnya menjadi proyek iOS. Podfile saya mengatakan "platform: ios".

Huggie
sumber
2020 - bagi siapa pun yang berjuang dengan masalah yang menjengkelkan ini. Ini benar-benar hanya disebabkan oleh (Surprise! :)) facebook. Seperti yang dijelaskan di SINI, firebase.google.com/docs/auth/ios/firebaseui "Jika Anda mau, Anda hanya dapat menambahkan komponen Auth dan penyedia yang ingin Anda gunakan ..." begitu Anda menghilangkan opsi facebook, tidak ada masalah lagi. . : /
Fattie

Jawaban:

543

Ini pasti bekerja sebagian besar waktu:

Buka Pengaturan Bangun target Anda -> bendera penghubung lainnya -> klik dua kali. Tambahkan $(inherited)ke baris baru.

Jika Anda memiliki masalah dengan "... target menimpa pengaturan bangunan GCC_PREPROCESSOR_DEFINITIONS yang didefinisikan dalam ..." maka Anda harus menambahkan $ (diwarisi) ke target Anda Membangun Pengaturan -> Preprocessor Macro

Ankish Jain
sumber
29
Saya akan memperluas jawaban ini. Jika Anda memiliki masalah dengan "... target mengesampingkan GCC_PREPROCESSOR_DEFINITIONSpengaturan build yang ditentukan dalam ..." maka Anda harus menambahkan $ (diwarisi) ke target Anda Membangun Pengaturan -> Makro Preprocessor
Libor Zapletal
1
saya menduga bahwa "... target mengabaikan INSERT_YOUR_MISSING_DEFINITION ..." maka Anda harus menambahkan $ (diwarisi) untuk itu. anehnya, xcode saya menunjukkan $ (diwarisi) sedikit pingsan secara default. saya mengedit dan cukup mengetik ulang hal yang sama. kesalahan menghilang ..
joe
3
@ Jo masih tidak bekerja untuk saya. Saya mencoba semua saran ini, tetapi ketika saya jalankan kembali menginstal pod, kesalahan tetap ada. Saya membuat perubahan pada kedua flag linker lain dan ke macro preprocessor. Dalam kedua kasus, tidak ada yang muncul sampai Anda mengklik dua kali pada setiap baris di flag linker lain dan makro preprosesor. Maka Anda dapat melihat bahwa $ (warisan) telah ditambahkan. Saya mencoba menghapus dan membaca. Saya mencoba menutup dan membuka kembali xcode. Tidak ada yang memperbaiki pesan kesalahan ketika saya mengetik instalasi pod.
JeffB6688
1
@msmq Sudah lama, tetapi apakah Anda ingat solusi yang Anda coba dan berhasil? $(inherited)sudah ada di baris paling atas tetapi tidak berfungsi untuk saya: /
Kostas Dimakis
1
saya telah menambahkannya stil pod install melempar kesalahan yang sama.
rohitwtbs
75

Ada konflik antara pengaturan build Anda dan pengaturan build default yang diinginkan Cocoapods. Untuk melihat pengaturan pembuatan Cocoapods, lihat file .xcconfig di Pods / File Dukungan Target / Pods - $ {PROJECTNAME} / di proyek Anda. Bagi saya file ini mengandung:

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

Jika Anda senang dengan pengaturan Cocoapods, kemudian pergi ke Build Settings untuk proyek Anda, cari pengaturan yang sesuai dan tekan tombol Delete. Ini akan menggunakan pengaturan dari Cocoapods.

Di sisi lain, jika Anda memiliki pengaturan khusus yang perlu Anda gunakan, kemudian tambahkan $ (diwarisi) ke pengaturan itu.

Phatmann
sumber
Saya punya masalah ini juga, saya bisa menghapus -ObjC dan itu memperbaiki masalah ini. Namun, ketika saya mencoba untuk membangun proyek, saya mendapatkan kesalahan menyarankan bahwa target perpustakaan pod spesifik tidak dapat ditemukan: "ld: perpustakaan tidak ditemukan untuk -lPods-MyProject". Apakah Anda melihat sesuatu yang serupa?
Roderic Campbell
3
Saya mengalami ini lagi. Saya tidak yakin artinya $ (diwariskan). Di mana saya menambahkannya?
huggie
@RodericCampbell Saya telah menemukan bahwa menghapus -ObjC dari proyek berfungsi dengan baik untuk saya dan saya tidak melihat kesalahan Anda.
huggie
1
Hmm, tapi saya perlu flag -ObjC untuk itu pada saat runtime karena saya mendapat kategori.
huggie
3
OTHER_LDFLAGS = Bendera Terkait Lainnya, HEADER_SEARCH_PATHS = Jalur Pencarian Header, GCC_PREPROCESSOR_DEFINITIONS = Makro Preprosesor. @kraftydevil, pengaturan apa yang ingin Anda hapus?
phatmann
30

Saya telah melihat 3 kesalahan ini untuk perintah pod di terminal

pod install

[!] Target MY_APP [Debug / Rilis] menimpa HEADER_SEARCH_PATHS ...
[!] Target MY_APP [Debug / Rilis] menimpa OTHER_LDFLAGS ...
[!] Target MY_APP [Debug / Rilis] mengungguli GCC_PREPROCESSOR_DEFINISI .. .

Semua 3 kesalahan ini akan hilang dengan menambahkan $ (diwarisi) ke

  1. Jalur Pencarian Header
  2. Bendera Penghubung Lainnya
  3. Makro preprosesor

di Project -> Target -> Build Settings

Dan sekarang perintah itu akan berjalan tanpa memberikan kesalahan

pod install
zeeawan
sumber
Di atas bekerja untuk saya, ketika hanya mengubah bendera Other Linker Flagstidak cukup.
JaredH
21

Di proyek Anda, temukan Target -> Build Settings -> Other Linker Flags, pilih Other Linker Flags, tekan delete(Keyboard Mac) / Backspace(Keyboard normal) untuk memulihkan pengaturan. Ini bekerja untuk saya.

Contoh:

Sebelum masukkan deskripsi gambar di sini

Setelah masukkan deskripsi gambar di sini

SamirChen
sumber
1
apakah kita menghapus pengaturan yang sudah ada di Bendera Tautan Lain? atau apakah kita menyimpannya dan juga menambahkan $ (diwarisi) ??
isJulian00
20

Baru saja mengalami masalah serupa ketika saya berlari pod install, saya melihat peringatan / kesalahan berikut (terkait dengan CLANG_CXX_LIBRARY):

Kesalahan / Peringatan dari 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.

Cara Mengatasinya

  1. Pilih milik Anda Project sehingga Anda dapat melihat Build Settings.
  2. Pilih Target(AppName bawah Targets) Anda
  3. Temukan C++ Standard Library(Mungkin akan masuk dicetak BOLD - Ini artinya ditimpa).
  4. Pilih Garis (Jadi tersorot Biru), dan tekan ⌘ + DELETE (Command + Backspace)

Garis tidak boleh dicetak tebal lagi dan jika Anda menjalankan pod install peringatan / kesalahan seharusnya menghilang.


Peraga

CLANG_CXX_LIBRARY Kesalahan / Peringatan dengan Cocoapods

Anil
sumber
12

Jika Xcode mengeluh ketika menautkan, mis. Perpustakaan tidak ditemukan untuk -lPods, itu tidak mendeteksi dependensi implisit:

Pergi ke Produk> Edit Skema Klik Build Tambah pustaka statis Pods Bersihkan dan bangun kembali

Amit Saxena
sumber
Saya mencoba cara yang Anda sarankan, tetapi tidak menunjukkan kerangka kerja diinstal terbaru oleh file pod, ada saran lagi untuk memperbaiki kesalahan flag linker. @Amit Saxena
Anilkumar iOS ReactNative
11

Bagi saya masalahnya adalah dengan tes target saya. Saya sudah punya$(inherited) bendera di target aplikasi utama saya.

Saya menambahkannya ke bendera MyAppTests Other Linker. Setelah itu ketika saya menjalankan pod installpesan peringatan hilang. masukkan deskripsi gambar di sini

Andreas Olsson
sumber
6

Saya menambahkan $ (diwarisi) tetapi proyek saya masih belum dikompilasi. Bagi saya masalahnya adalah flag "Build for Arsitektur aktif saja", saya harus mengaturnya ke YA.

sanjana
sumber
jika proyek sedang dikompilasi, bisakah kita mengabaikan peringatan?
isJulian00