La cible… remplace le paramètre de construction `OTHER_LDFLAGS` défini dans` Pods / Pods.xcconfig

237

J'ai incorporé SpatialIitedans un projet Xcode qui utilise un fichier d'en-tête Proj.4, juste un en-tête. Les deux sont des projets Xcode et ont des cibles statiques.

J'essaie de migrer du sous-module git vers les Cocoapods. Étant donné que les cibles statiques semblent difficiles à utiliser avec les Cocoapods, je veux juste que le projet soit construit de la manière habituelle. J'ai fait podspec pour Proj.4. Après avoir écrit le fichier pod pour SpatialLitej'ai reçu les avertissements:

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

J'ai lu ce problème, mais je ne sais pas du tout ce que signifient les avertissements et que puis-je faire pour y remédier.

De plus, lorsque j'ouvre l'espace de travail et que j'ouvre le projet SpatiaLite seul, les deux sont ciblés sur Mac OSX 64, lorsqu'il est supposé être un projet iOS. Mon podfile dit "plateforme: ios".

huggie
la source
2020 - pour toute personne aux prises avec ce problème ennuyeux. C'est vraiment uniquement causé par (Surprise! :)) Facebook. Comme expliqué ICI, firebase.google.com/docs/auth/ios/firebaseui "Si vous préférez, vous ne pouvez ajouter que le composant Auth et les fournisseurs que vous souhaitez utiliser ..." une fois que vous avez supprimé l'option facebook, il n'y a pas de problème . : /
Fattie

Réponses:

543

Cela fonctionne certainement la plupart du temps:

Accédez à vos paramètres de build cibles -> Autres indicateurs de l'éditeur de liens -> double-cliquez. Ajoutez $(inherited)à une nouvelle ligne.

Si vous rencontrez un problème avec "... la cible remplace le paramètre de génération GCC_PREPROCESSOR_DEFINITIONS défini dans ...", vous devez ajouter $ (hérité) à vos paramètres de génération cible -> Macros de préprocesseur

Ankish Jain
la source
29
Je voudrais étendre cette réponse. Si vous avez un problème avec "... la cible remplace le GCC_PREPROCESSOR_DEFINITIONSparamètre de génération défini dans ...", vous devez ajouter $ (hérité) à vos paramètres de
génération
1
je soupçonne que "... la cible remplace la INSERT_YOUR_MISSING_DEFINITION ..." alors vous devez y ajouter $ (hérité). bizarrement cependant, mon xcode montrait $ (hérité) un peu faible comme par défaut. j'ai édité et simplement retapé la même chose. erreur a disparu ..
joe
3
@joe Ne fonctionne toujours pas pour moi. J'ai essayé toutes ces suggestions, mais lorsque je relance l'installation du pod, les erreurs persistent. J'ai apporté les modifications aux autres drapeaux de l'éditeur de liens et aux macros de préprocesseur. Dans les deux cas, rien ne s'affiche tant que vous ne double-cliquez pas sur chacune des lignes des autres indicateurs de l'éditeur de liens et des macros de préprocesseur. Ensuite, vous pouvez voir que $ (hérité) a été ajouté. J'ai essayé de supprimer et de relire. J'ai essayé de fermer et de rouvrir xcode. Rien ne corrige les messages d'erreur lorsque je tape dans l'installation de pod.
JeffB6688
1
@msmq Cela fait longtemps, mais vous souvenez-vous de la solution de contournement que vous avez essayée et fait fonctionner? $(inherited)est déjà là sur la première ligne mais ça ne marche pas pour moi: /
Kostas Dimakis
1
je l'ai ajouté stil pod install lance la même erreur.
rohitwtbs
75

Il existe un conflit entre vos paramètres de build et les paramètres de build par défaut souhaités par Cocoapods. Pour voir les paramètres de génération de Cocoapods, affichez le ou les fichiers .xcconfig dans Pods / Target Support Files / Pods - $ {PROJECTNAME} / dans votre projet. Pour moi, ce fichier contient:

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

Si vous êtes satisfait des paramètres Cocoapods, allez dans Paramètres de construction pour votre projet, trouvez le paramètre approprié et appuyez sur la touche Supprimer. Cela utilisera le paramètre de Cocoapods.

D'un autre côté, si vous avez un paramètre personnalisé que vous devez utiliser, ajoutez $ (hérité) à ce paramètre.

phatmann
la source
J'ai également eu ce problème, j'ai pu supprimer le -ObjC et cela a résolu ce problème. Cependant, lorsque j'ai tenté de créer le projet, j'obtiens une erreur suggérant que la bibliothèque de pods spécifique cible est introuvable: "ld: bibliothèque introuvable pour -lPods-MyProject". Avez-vous vu quelque chose de similaire?
Roderic Campbell
3
Je suis à nouveau confronté à cela. Je ne suis pas sûr que $ (hérité) signifie. Où dois-je l'ajouter?
huggie
@RodericCampbell J'ai trouvé que la suppression de -ObjC du projet fonctionne bien pour moi et je ne vois pas votre erreur.
huggie
1
Hmm, mais j'ai besoin de l'indicateur -ObjC pour cela à l'exécution depuis que j'ai des catégories.
huggie
3
OTHER_LDFLAGS = Autres indicateurs liés, HEADER_SEARCH_PATHS = Chemins de recherche d'en-tête, GCC_PREPROCESSOR_DEFINITIONS = Macros de préprocesseur. @kraftydevil, quel paramètre essayez-vous de supprimer?
phatmann
30

J'ai vu ces 3 erreurs pour la commande pod dans le terminal

pod install

[!] La cible MY_APP [Debug / Release] remplace les HEADER_SEARCH_PATHS ...
[!] La cible MY_APP [Debug / Release] remplace les OTHER_LDFLAGS ...
[!] La cible MY_APP [Debug / Release] remplace les cibles GCC_PREPROCESSOR_DEFINITIONS .. .

Ces 3 erreurs auraient disparu en ajoutant $ (hérité) à

  1. Chemins de recherche d'en-tête
  2. Autres drapeaux de l'éditeur de liens
  3. Macros de préprocesseur

dans Project -> Target -> Build Settings

Et maintenant, la commande s'exécuterait sans donner d'erreurs

pod install
Zeeawan
la source
Ce qui précède a fonctionné pour moi, quand simplement changer le drapeau Other Linker Flagsn'était pas suffisant.
JaredH
21

Dans votre projet, recherchez Target -> Build Settings -> Other Linker Flags, sélectionnez Other Linker Flags, appuyez sur delete(Clavier Mac) / Backspace(Clavier normal) pour récupérer le paramètre. Ça marche pour moi.

Exemple:

Avant entrez la description de l'image ici

Après entrez la description de l'image ici

SamirChen
la source
1
supprimons-nous les paramètres déjà situés dans les autres indicateurs de l'éditeur de liens? ou les gardons-nous et ajoutons-nous également $ (hérité) ??
isJulian00
20

Juste eu un problème similaire lorsque j'ai couru pod install, j'ai vu les avertissements / erreurs suivants (liés à CLANG_CXX_LIBRARY):

L'erreur / l'avertissement des 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.

The Fix

  1. Sélectionnez votre Projectafin que vous puissiez voir le Build Settings.
  2. Sélectionnez votre Target( AppNamesous Targets)
  3. Rechercher C++ Standard Library(il sera probablement en gras - cela signifie qu'il est remplacé).
  4. Sélectionnez la ligne (elle est donc surlignée en bleu) et appuyez sur ⌘ + DELETE(Commande + Retour arrière)

La ligne ne devrait plus être en gras et si vous exécutez pod installles avertissements / erreurs devraient avoir disparu.


Aide visuelle

CLANG_CXX_LIBRARY Erreur / avertissement avec Cocoapods

Anil
la source
12

Si Xcode se plaint lors de la liaison, par exemple, bibliothèque non trouvée pour -lPods, il ne détecte pas les dépendances implicites:

Allez dans Produit> Modifier le schéma Cliquez sur Créer Ajouter la bibliothèque statique des pods Nettoyer et reconstruire

Amit Saxena
la source
J'ai essayé la façon dont vous avez suggéré, mais cela ne montre pas les cadres installés récemment par fichier pod, d'autres suggestions pour corriger les erreurs d'indicateur de l'éditeur de liens. @Amit Saxena
Anilkumar iOS ReactNative
11

Pour moi, le problème était avec mes tests de cibles. J'avais déjà le $(inherited)drapeau dans ma cible d'application principale.

Je l'ai ajouté aux indicateurs MyLinkTests Other Linker. Après cela, quand j'ai couru, pod installle message d'avertissement avait disparu. entrez la description de l'image ici

Andreas Olsson
la source
6

J'ai ajouté $ (hérité) mais mon projet n'était toujours pas en cours de compilation. Pour moi, le problème était le drapeau "Construire pour l'architecture active uniquement", j'ai dû le régler sur OUI.

sanjana
la source
si le projet est en cours de compilation, pouvons-nous simplement ignorer les avertissements?
isJulian00