web-dev-qa-db-fra.com

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

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

J'essaie de migrer d'un sous-module git vers des Cocoapods. Comme les cibles statiques semblent difficiles à utiliser avec Cocoapods, je souhaite simplement que le projet soit construit de la manière habituelle. J'ai créé podspec pour Proj.4. Après avoir écrit podfile pour SpatialLite, j'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 numéro mais je ne suis pas très au courant de ce que signifient les avertissements et de ce que je peux faire pour y remédier.

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

219
huggie

Cela fonctionne certainement la plupart du temps:

Accédez aux paramètres de construction de votre cible -> Autres drapeaux de l'éditeur de liens -> double-cliquez sur l'icône. Ajoutez $(inherited) à une nouvelle ligne.

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

506
Ankish Jain

Il existe un conflit entre vos paramètres de construction et les paramètres de construction par défaut souhaités par Cocoapods. Pour voir les paramètres de construction de Cocoapods, affichez le (s) fichier (s) .xcconfig dans Pods/Fichiers de support cible/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 de Cocoapods, accédez à Construire les paramètres de votre projet, recherchez le paramètre approprié et appuyez sur la touche Suppr. Cela utilisera le réglage de Cocoapods.

D'autre part, si vous devez utiliser un paramètre personnalisé, ajoutez $ (hérité) à ce paramètre.

74
phatmann

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

pod install

[!] La cible MY_APP [Debug/Release] remplace la HEADER_SEARCH_PATHS ...
[!] La cible MY_APP [Debug/Release] annule la valeur OTHER_LDFLAGS ...
[!] La cible MY_APP [Debug/Release] remplace le GCC_PREPROCESSOR_DEFINITIONS ...

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

  1. En-tête des chemins de recherche
  2. Autres drapeaux de lieur
  3. Macros de préprocesseur

dans Projet -> Cible -> Paramètres de construction

Et maintenant, la commande serait exécutée sans donner d'erreur

pod install
26
zeeawan

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établir le réglage. Ça marche pour moi.

Exemple:

Avant enter image description here

Après enter image description here

20
SamirChen

Un problème similaire vient de se produire lorsque j'ai exécuté pod install, les avertissements/erreurs suivants (liés à CLANG_CXX_LIBRARY):

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

Le correctif

  1. Sélectionnez votre Project pour pouvoir voir le Build Settings.
  2. Sélectionnez votre Target (AppName sous Targets)
  3. Find C++ Standard Library (Il sera probablement dans 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 doit plus être en gras et si vous exécutez pod install, les avertissements/erreurs doivent avoir disparu.


Aide visuelle

CLANG_CXX_LIBRARY Error/Warning with Cocoapods

19
Anil

Si Xcode se plaint lors de la liaison, par exemple, Bibliothèque introuvable pour -lPods, elle ne détecte pas les dépendances implicites:

Accédez à Produit> Modifier le schéma. Cliquez sur Construire. Ajoutez la bibliothèque statique des pods. Nettoyez et reconstruisez à nouveau.

12
Amit Saxena

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

Je l'ai ajouté à MyAppTests Other Linker flags. Après cela, lorsque j'ai exécuté pod install, le message d'avertissement avait disparu. enter image description here

8
Andreas Olsson

La première ligne de lien ci-dessous a sauvé ma journée:

Pour ajouter des valeurs aux options à partir des paramètres de construction de votre projet, ajoutez la valeur $ (hérité) à la liste de valeurs.

https://github.com/CocoaPods/CocoaPods/wiki/Creating-a-project-that-uses-CocoaPods#faq

De plus, n'oubliez pas d'insérer cette ligne au début de votre fichier pod:

platform :iOS, '5.0'
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 une architecture active uniquement", je devais le régler sur OUI.

5
sanjana