Il target ... sovrascrive l'impostazione di build `OTHER_LDFLAGS` definita in` Pods / Pods.xcconfig


237

Ho incorporato SpatialIitein un progetto Xcode che utilizza un file di intestazione da Proj.4, solo un'intestazione. Entrambi sono progetti Xcode e hanno obiettivi statici.

Sto cercando di migrare dal sottomodulo git a Cocoapods. Poiché gli obiettivi statici sembrano difficili da usare con Cocoapods, voglio solo che il progetto sia costruito nel solito modo. Ho realizzato podspec per Proj.4. Dopo aver scritto il podfile per SpatialLiteho ricevuto gli avvisi:

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

Ho letto questo problema ma non ho idea di cosa significhino gli avvisi e cosa posso fare per risolverlo.

Inoltre, quando apro l'area di lavoro e quando apro il progetto SpatiaLite da solo, entrambi sono indirizzati a Mac OSX 64, quando si suppone che sia un progetto iOS. Il mio podfile dice "platform: ios".


2020 - per chiunque abbia problemi con questo fastidioso problema. È davvero causato solo da (Sorpresa! :)) Facebook. Come spiegato QUI, firebase.google.com/docs/auth/ios/firebaseui "Se preferisci, puoi aggiungere solo il componente Auth e i provider che desideri utilizzare ..." una volta eliminata l'opzione facebook, non c'è problema . : /
Fattie

Risposte:


543

Questo sicuramente funziona la maggior parte delle volte:

Vai al tuo target Impostazioni di costruzione -> Altri flag linker -> doppio clic. Aggiungi $(inherited)a una nuova linea.

In caso di problemi con "... target sovrascrive l'impostazione di build GCC_PREPROCESSOR_DEFINITIONS definita in ...", è necessario aggiungere $ (ereditato) alle impostazioni di build di destinazione -> Macro del preprocessore


29
Estenderei questa risposta. Se hai problemi con "... target sovrascrive le GCC_PREPROCESSOR_DEFINITIONSimpostazioni di compilazione definite in ...", allora devi aggiungere $ (ereditato) al tuo target Impostazioni di compilazione -> Macro del preprocessore
Libor Zapletal

1
sospetto che "... target sovrascrive INSERT_YOUR_MISSING_DEFINITION ...", quindi devi aggiungere $ (ereditato) ad esso. stranamente però, il mio xcode mostrava $ (ereditato) un po 'debole come impostazione predefinita. ho modificato e semplicemente riscritto la stessa cosa. errore scomparso ..
joe

3
@joe Non funziona ancora per me. Ho provato tutti questi suggerimenti, ma quando eseguo nuovamente l'installazione del pod, gli errori persistono. Ho apportato le modifiche sia agli altri flag del linker che alle macro del preprocessore. In entrambi i casi, nulla viene visualizzato fino a quando non si fa doppio clic su ciascuna delle linee negli altri flag linker e nelle macro del preprocessore. Quindi puoi vedere che $ (ereditato) è stato aggiunto. Ho provato a cancellare e leggere. Ho provato a chiudere e riaprire xcode. Nulla corregge i messaggi di errore quando digito installazione pod.
JeffB6688,

1
@msmq È passato molto tempo, ma ricordi la soluzione alternativa che hai provato e hai fatto in modo che funzionasse? $(inherited)è già lì nella linea superiore ma non funziona per me: /
Kostas Dimakis

1
l'ho aggiunto stil pod install genera lo stesso errore.
rohitwtbs,

75

C'è un conflitto tra le tue impostazioni di build e le impostazioni di build predefinite che Cocoapods desidera. Per visualizzare le impostazioni di compilazione di Cocoapods, visualizzare i file .xcconfig in Pod / Target Support Files / Pods - $ {PROJECTNAME} / nel progetto. Per me questo file contiene:

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

Se sei soddisfatto delle impostazioni di Cocoapods, vai su Crea impostazioni per il tuo progetto, trova l'impostazione appropriata e premi il tasto Elimina. Questo utilizzerà l'impostazione da Cocoapods.

D'altra parte, se si dispone di un'impostazione personalizzata che è necessario utilizzare, quindi aggiungere $ (ereditato) a tale impostazione.


Ho avuto anche questo problema, sono stato in grado di rimuovere -ObjC e questo ha risolto questo problema. Tuttavia, quando ho tentato di compilare il progetto, viene visualizzato un errore che suggerisce che non è possibile trovare la libreria pod specifica di destinazione: "ld: libreria non trovata per -lPods-MyProject". Hai visto qualcosa di simile?
Roderic Campbell,

3
Sono incappato di nuovo in questo. Non sono sicuro che $ (ereditato) significhi. Dove lo aggiungo?
Huggie,

@RodericCampbell Ho scoperto che rimuovere -ObjC dal progetto funziona bene per me e non vedo il tuo errore.
Huggie

1
Hmm, ma ho bisogno del flag -ObjC per questo in fase di esecuzione da quando ho ottenuto le categorie.
Huggie

3
OTHER_LDFLAGS = Altre bandiere collegate, HEADER_SEARCH_PATHS = Percorsi di ricerca intestazione, GCC_PREPROCESSOR_DEFINITIONS = Macro preprocessore. @kraftydevil, quale impostazione stai cercando di eliminare?
Phatmann,

30

Ho visto questi 3 errori per il comando pod nel terminale

pod install

[!] Il target MY_APP [Debug / Release] ha la precedenza su HEADER_SEARCH_PATHS ...
[!] Il target MY_APP [Debug / Release] ha la precedenza sul OTHER_LDFLAGS ...
[!] Il target MY_APP [Debug / Release] ha la precedenza su GCC_PREPROCESSOR_DEFINITIONS. .

Tutti questi 3 errori sarebbero scomparsi aggiungendo $ (ereditato) a

  1. Percorsi di ricerca dell'intestazione
  2. Altre bandiere Linker
  3. Macro del preprocessore

in Progetto -> Destinazione -> Impostazioni di costruzione

E ora il comando verrebbe eseguito senza dare alcun errore

pod install

Quanto sopra ha funzionato per me, quando semplicemente cambiare la bandiera per Other Linker Flagsnon era sufficiente.
JaredH,

21

Nel progetto, trova Target -> Build Settings -> Other Linker Flags, seleziona Other Linker Flags, premi delete(Tastiera Mac) / Backspace(Tastiera normale) per ripristinare l'impostazione. Per me funziona.

Esempio:

Prima inserisci qui la descrizione dell'immagine

Dopo inserisci qui la descrizione dell'immagine


1
rimuoviamo le impostazioni già presenti nelle altre bandiere linker? o li conserviamo e aggiungiamo anche $ (ereditato) ??
isJulian00

20

Ho appena avuto un problema simile quando ho eseguito pod install, ho visto i seguenti avvisi / errori (relativi a CLANG_CXX_LIBRARY):

L'errore / avviso da 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.

La correzione

  1. Seleziona il tuo in Projectmodo da poter vedere Build Settings.
  2. Seleziona il tuo Target( AppNamesotto Targets)
  3. Trova C++ Standard Library(probabilmente ci sarà GRASSO - Ciò significa che è ignorato).
  4. Seleziona la linea (quindi è evidenziata in blu) e premi ⌘ + DELETE (Comando + Backspace)

La linea non dovrebbe più essere in grassetto e se corri pod install gli avvisi / errori dovrebbero essere scomparsi.


Aiuto visivo

CLANG_CXX_LIBRARY Errore / Avviso con Cocoapods


12

Se Xcode si lamenta durante il collegamento, ad es. Libreria non trovata per -lPods, non rileva le dipendenze implicite:

Vai a Prodotto> Modifica schema Fai clic su Genera Aggiungi la libreria statica Pods Pulisci e costruisci di nuovo


Ho provato nel modo che hai suggerito, ma non mostra i framework installati di recente dal file pod, ulteriori suggerimenti per correggere gli errori del flag del linker. @Amit Saxena
Anilkumar iOS ReactNative

11

Per me il problema era con i miei test sugli obiettivi. Ho già avuto il$(inherited) bandiera nel mio target principale dell'app.

L'ho aggiunto ai flag MyAppTests Other Linker. Dopo quello, quando ho corso, pod installil messaggio di avvertimento era sparito. inserisci qui la descrizione dell'immagine



6

Ho aggiunto $ (ereditato) ma il mio progetto non si stava ancora compilando. Per me il problema era il flag "Build for active Architecture only", dovevo impostarlo su YES.


se il progetto è in fase di compilazione, possiamo semplicemente ignorare gli avvisi?
isJulian00
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.