Hedef…, Pods / Pods.xcconfig dosyasında tanımlanan `OTHER_LDFLAGS` oluşturma ayarını geçersiz kılar


237

Ben sadece bir başlık, SpatialIitebir başlık dosyası kullanan bir Xcode projesine dahil ettik Proj.4. Her ikisi de Xcode projesidir ve statik hedefleri vardır.

Git alt modülünden Cocoapod'lara göç etmeye çalışıyorum. Statik hedeflerin Cocoapods ile kullanımı zor göründüğünden, projeyi her zamanki gibi inşa ettirmek istiyorum. İçin podspec yaptım Proj.4. Podfile yazdıktan sonra SpatialLiteuyarıları aldım:

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

Bu sorunu okudum, ancak uyarıların ne anlama geldiğini ve bunu düzeltmek için ne yapabilirim konusunda oldukça bilgim yok.

Ayrıca sorun, çalışma alanını açtığım ve yalnızca SpatiaLite projesini açtığımda, bir iOS projesi olduğu varsayıldığında, her ikisi de Mac OSX 64'ü hedefliyor. Pod dosyam "platform: ios" diyor.


2020 - bu sinir bozucu sorunla mücadele eden herkes için. Gerçekten sadece (Sürpriz! :)) facebook neden olur. BURADA açıklandığı gibi firebase.google.com/docs/auth/ios/firebaseui "Tercih ederseniz , facebook seçeneğini kaldırdıktan sonra yalnızca Auth bileşenini ve kullanmak istediğiniz sağlayıcıları ekleyebilirsiniz ..." . : /
Fattie

Yanıtlar:


543

Bu kesinlikle çoğu zaman işe yarar:

Hedef Oluşturma Ayarları -> Diğer bağlayıcı bayrakları -> çift tıklama seçeneğine gidin. $(inherited)Yeni bir satıra ekleyin .

"... hedefi ile ilgili sorun, ..." içinde tanımlanan GCC_PREPROCESSOR_DEFINITIONS oluşturma ayarını geçersiz kılarsa, hedef Oluşturma Ayarları -> Önişlemci Makrolarına $ (devralınmış) eklemeniz gerekir


29
Bu cevabı uzatırdım. "... target ile GCC_PREPROCESSOR_DEFINITIONStanımlanmış olan yapı ayarını geçersiz kılar ..." ile ilgili sorun yaşıyorsanız, hedef Oluşturma Ayarları -> Önişlemci Makroları
Libor Zapletal

1
"... hedef INSERT_YOUR_MISSING_DEFINITION ... geçersiz kılar" şüpheli o zaman $ (miras alınan) eklemeniz gerekir. garip bir şekilde, benim xcode $ (miras) varsayılan olarak biraz soluk gösteriliyordu. aynı şeyi düzenledim ve tekrar yazdım. hata kayboldu ..
joe

3
@joe Hala benim için çalışmıyor. Tüm bu önerileri denedim, ancak pod kurulumunu yeniden çalıştırdığımda hatalar devam ediyor. Diğer bağlayıcı bayraklarında ve önişlemci makrolarında değişiklikler yaptım. Her iki durumda da, diğer bağlayıcı bayraklarındaki ve önişlemci makrolarındaki satırların her birini çift tıklayana kadar hiçbir şey gösterilmez. Ardından $ (devralındı) öğesinin eklendiğini görebilirsiniz. Silmeyi ve okumayı denedim. Xcode'u kapatıp yeniden açmayı denedim. Pod kurulumuna yazdığımda hiçbir şey hata mesajlarını düzeltmiyor.
JeffB6688

1
@msmq Uzun zaman oldu, ama denediğiniz ve çalıştıran geçici çözümü hatırlıyor musunuz? $(inherited)zaten en üst sırada yer alıyor ama benim için çalışmıyor: /
Kostas Dimakis

1
i ekledim stil pod install aynı hatayı atar.
rohitwtbs

75

Yapı ayarlarınız ile Cocoapods'un istediği varsayılan yapı ayarları arasında bir çakışma var. Cocoapods oluşturma ayarlarını görmek için, projenizdeki Pods / Hedef Destek Dosyaları / Pods - $ {PROJECTNAME} / içindeki .xcconfig dosyalarını görüntüleyin. Benim için bu dosya şunları içerir:

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 ayarlarından memnunsanız, projeniz için Oluşturma Ayarları'na gidin, uygun ayarı bulun ve Sil tuşuna basın. Bu Cocoapods ayarını kullanacaktır.

Öte yandan, kullanmanız gereken özel bir ayarınız varsa, o ayara $ (miras alınan) ekleyin.


Ben de bu sorunu vardı, -ObjC kaldırmak başardı ve bu sorunu düzeltti. Ancak, proje oluşturmaya çalıştığımda, hedefe özgü pod kitaplığı bulunamadığını bildiren bir hata alıyorum: "ld: -lPods-MyProject için kitaplık bulunamadı". Benzer bir şey gördün mü?
Roderic Campbell

3
Buna tekrar giriyorum. $ (Miras alınan) anlamına geldiğinden emin değilim. Nereye eklerim?
huggie

@RodericCampbell -ObjC projeden kaldırılması benim için iyi çalışıyor buldum ve senin hata görmüyorum.
huggie

1
Hmm, ama kategoriler var beri çalışma zamanında bunun için -ObjC bayrağı gerekir.
huggie

3
OTHER_LDFLAGS = Bağlantılı Diğer Bayraklar, HEADER_SEARCH_PATHS = Başlık Arama Yolları, GCC_PREPROCESSOR_DEFINITIONS = Önişlemci Makroları. @kraftydevil, hangi ayarı silmeye çalışıyorsunuz?
phatmann

30

Terminalde pod komutu için bu 3 hatayı gördüm

pod install

[!] MY_APP [Hata Ayıklama / Bırakma] hedefi HEADER_SEARCH_PATHS'yi geçersiz kılar ...
[!] MY_APP [Hata Ayıklama / Bırakma] hedefi OTHER_LDFLAGS'ı geçersiz kılar ...
[!] MY_APP [Hata Ayıklama / Bırakma] hedefi GCC_PREPROCESSOR_DEFINITIONS'ı geçersiz kılar. .

Tüm bu 3 hatalar ekleyerek gitmiş olurdu $ (kalıtsal) için

  1. Üstbilgi Arama Yolları
  2. Diğer Bağlayıcı Bayrakları
  3. Önişlemci Makroları

içinde Projesi -> Hedef -> Yapı ayarlar

Ve şimdi komut herhangi bir hata vermeden çalışacaktı

pod install

Yukarıdakiler benim için çalıştı, sadece bayrağı değiştirmek Other Linker Flagsyeterli değildi.
JaredH

21

Projenizde bulup Target -> Build Settings -> Other Linker Flagsseçin Other Linker Flags, ayarı kurtarmak için delete(Mac Keyboard) / Backspace(Normal keyboard) düğmesine basın . Benim için çalışıyor.

Misal:

Önce resim açıklamasını buraya girin

Sonra resim açıklamasını buraya girin


1
Bağlayıcı Bayraklarında zaten bulunan ayarları kaldırır mıyız? ya da biz onları tutmak ve ayrıca $ (miras) eklemek ??
isJulian00

20

Koştuğumda benzer bir sorun yaşadım pod install, aşağıdaki uyarıları / hataları gördüm (ile ilgili CLANG_CXX_LIBRARY):

Cocoapodlardan Hata / Uyarı

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

Çözüm

  1. SELECT Projectböylece görebilirsiniz Build Settings.
  2. Senin seçin Target( AppNamealtından Targets)
  3. Bul C++ Standard Library(Muhtemelen BOLD'da olacaktır - Bu geçersiz kılındığı anlamına gelir).
  4. Satırı seçin (Mavi renkte vurgulanır) ve ⌘ + DELETE(Command + Backspace) tuşlarına basın

Artık çizgi kalın olmamalı ve çalıştırırsanız pod installuyarıların / hataların ortadan kalkmış olması gerekir.


Görsel yardım

CLANG_CXX_LIBRARY Cocoapod'larda Hata / Uyarı


12

Xcode bağlantı kurarken şikayet ederse, örn. -LPods için Kütüphane bulunamadı, örtük bağımlılıkları algılamaz:

Ürüne Git> Şemayı Düzenle Oluştur'a tıklayın Bölmeler statik kütüphanesini ekleyin Temizleyin ve tekrar oluşturun


Önerdiğiniz şekilde denedim, ancak pod dosyasıyla son yüklenen çerçeveleri göstermiyor, linker bayrak hatalarını düzeltmek için daha fazla öneri. @Amit Saxena
Anilkumar iOS ReactNative

11

Benim için sorun hedeflerimdeki testlerdi. $(inherited)Ana uygulama hedefimde bayrak zaten vardı .

Uygulamam Diğer Bağlayıcı bayraklarına ekledim. Bundan sonra koştuğumda pod installuyarı mesajı gitti. resim açıklamasını buraya girin



6

$ (Devralındı) ekledim, ancak projem hala derlenmiyordu. Benim için sorun "sadece aktif mimari için inşa" bayrağı, bunu EVET olarak ayarlamak zorunda kaldı.


eğer proje derleniyorsa uyarıları görmezden gelebilir miyiz?
isJulian00
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.