импорт заголовков при компиляции для osx и ios - PullRequest
0 голосов
/ 10 июня 2011

Скажем, у меня есть две библиотеки "Foo" и "Bar", которые компилируются как платформы для OSX и статические библиотеки для IOS.

Библиотека 'Foo' зависит от библиотеки 'Bar'. Я использую рабочие пространства XCode4.

В Ascii-art: -

  • IOS_App
  • ~ Foo.a
  • ~ ~ Bar.a

и

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

Файл Must Foo.m , который #imports Bar.h выглядит следующим образом: -

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

Или, есть ли способ, может быть, путем копирования заголовков при построении Bar и соответствующей установки путей поиска, чтобы сделать

  #import <Bar/Bar.h>

работают в обоих случаях?

(Я полагаю, корень моей проблемы не в правильном понимании разницы между #import </> и #import "")

1 Ответ

2 голосов
/ 10 июня 2011

Я много занимался этим, и в итоге я изменил заголовок префикса для приложения / проекта, чтобы импортировать либо конкретный заголовочный файл для библиотеки / фреймворка, либо если префикс является общим для OS Xи iOS (например, для библиотеки / фреймворка Foo) использует первый пример в вашем вопросе.

Тогда в Foo.m вам не нужно иметь какие-либо операторы #import вверху.

Так, например, в заголовке префикса для Foo.framework есть

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

, а в заголовке префикса для вашего приложения Mac OS X -

#import <Foo/Foo.h>

и для iOS

#import "Foo.h"

Тогда весь ваш исходный код не должен беспокоиться о заголовках для каких-либо классов в ваших общих библиотеках / инфраструктурах.

...