têtes importation lors de la compilation pour osx & ios
-
22-10-2019 - |
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 ""
)
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.