Xcode version personnalisée de configuration causes “de la bibliothèque/fichier non trouvé” pour les bibliothèques statiques

J'ai un espace de travail avec un projet dont les liens avec les bibliothèques statiques dans un autre projet (qui est aussi dans l'espace de travail). C'est un problème dans Kobold2D je n'ai pas été en mesure de résoudre, même si je comprends la cause, et je suppose que c'est semblable à cette question.

Les objectifs du projet et la bibliothèque statique cibles ont tous le Debug et Libération construire des configurations. Tout est bien.

Maintenant, quelqu'un ajoute une nouvelle configuration de build dans le projet et les noms qu'il Ad-Hoc par exemple. Maintenant la cible du projet s'appuie la Ad-Hoc de configuration, cependant les bibliothèques statiques n'ont pas cette configuration. Apparemment ils ont alors par défaut à la construction de l' Libération de configuration.

À la fin, lorsque l'éditeur de liens est censé réunir tout, il échoue:

ld: library not found for -lbox2d-ios
Command /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/clang++ failed with exit code 1

De force bibliothèques chargées via -force_load $(BUILT_PRODUCTS_DIR)/libSomeLib.a l'erreur est similaire, mais dit "fichier non trouvé". Il est à noter que la bibliothèque "libbox2d-ios.un" est dans le "lien binaire avec les bibliothèques" phase de construction de la liste.

Évidemment, le problème, c'est que l'éditeur de liens est en supposant que les bibliothèques sont dans le Ad-Hoc-iphoneos dossier dans le BUILT_PRODUCTS_DIR alors qu'ils sont en fait dans le de presse-iphoneos dossier car ils n'ont pas Ad-Hoc de configuration de la compilation.

Comment puis-je claque de l'éditeur de liens dans le visage et de lui dire à obtenir les bibliothèques où ils sont? De préférence, je suis à la recherche d'une solution qui fonctionne pour les deux cas, c'est à dire les bibliothèques ajouté la manière standard (lien binaire avec les bibliothèques phase de construction) et les bibliothèques qui ont besoin d'une autre -force_load de travail.

J'espère qu'il y a d'une certaine façon à:

  • force bibliothèques à être placé dans la configuration de build dossier de l'application cible
  • exécuter un post-compiler & pré-lien de script qui copie chaque bibliothèque à la configuration de build dossier
  • spécifier un chemin relatif aux bibliothèques
  • utiliser une autre macro autre que $BUILT_PRODUCTS_DIR pour -force_load
  • un linker drapeau comme -WTFmake-tous-les problèmes-go-away

Excusez-moi, mais je dois dire que cette ... ARGH! 🙂

  • Hehe! ARGH trop!
  • ARGH!!! en effet (rageguy)
InformationsquelleAutor LearnCocos2D | 2011-12-15