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".
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.
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.
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é) à
dans Projet -> Cible -> Paramètres de construction
Et maintenant, la commande serait exécutée sans donner d'erreur
pod install
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
Après
Un problème similaire vient de se produire lorsque j'ai exécuté pod install
, les avertissements/erreurs suivants (liés à CLANG_CXX_LIBRARY
):
[!] 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.
Project
pour pouvoir voir le Build Settings
.Target
(AppName
sous Targets
)C++ Standard Library
(Il sera probablement dans GRAS - Cela signifie qu'il est remplacé).La ligne ne doit plus être en gras et si vous exécutez pod install
, les avertissements/erreurs doivent avoir disparu.
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.
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'
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.