Question

Dire que j'ai deux bibliothèques « Foo » et « Bar », la compilation comme cadres pour Mac OS X et les bibliothèques statiques pour IOS.

Bibliothèque 'Foo' dépend de la bibliothèque 'Bar'. J'utilise des espaces de travail XCode4.

Ascii art: -

  • IOS_APP
  • ~ Foo.a
  • ~ ~ bars.Un

et

  • OSX_App
  • ~ Foo.framework
  • ~ ~ Bar.framework

fichier doit Foo.m #imports Bar.h ressembler à ceci: -

#if TARGET_OS_IPHONE
  #import "Bar.h"
#else
  #import <Bar/Bar.h>
#endif

Ou, est-il un moyen, peut-être en copiant les en-têtes lors de la construction Bar , et la mise en chemins de recherche de façon appropriée, faire

  #import <Bar/Bar.h>
travail

dans les deux cas?

(je suppose que la racine de mon problème est mal comprendre la différence entre #import </> et #import "")

Était-ce utile?

La solution

Je l'ai fait ce genre de chose largement, et ce que je fini par faire était de modifier l'en-tête de préfixe pour l'application / projet à importer soit le fichier d'en-tête spécifique pour la bibliothèque / cadre ou si le préfixe est commun entre OS X et iOS (comme pour la bibliothèque Foo / cadre) adopte le premier exemple dans votre question.

Ensuite, dans Foo.m vous n'avez pas besoin d'avoir des déclarations de #import en haut.

Ainsi, par exemple, dans l'en-tête de préfixe pour Foo.framework Have

#if TARGET_OS_IPHONE
  #import "Bar.h"
#else
  #import <Bar/Bar.h>
#endif

et dans l'en-tête de préfixe pour votre application Mac OS X ont pour

#import <Foo/Foo.h>

et pour iOS

#import "Foo.h"

Alors tout ce que vous le code source, n'a pas besoin d'inquiétude sur les en-têtes pour l'une des classes dans vos bibliothèques / cadres communs.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top