Я видел пост, который уже ссылался на мою проблему и решал ее, но она была активна 2 года назад, и я пытался использовать ее, но она не работает для меня (возможно, разница в Xcode или чем-то еще)
вот соответствующие посты:
Заставляем Xcode игнорировать статическую библиотеку при сборке для iOS
имитатор
Xcode: условные настройки сборки на основе архитектуры (устройство
(ARM) против симулятора (i386))
У меня есть проект, который работает с vuforia, библиотекой c ++, но эта библиотека не совместима с симулятором. Я хочу скомпилировать свой проект для симулятора (даже если часть, использующая lib, очевидно, не будет работать), чтобы проверить другие функциональные возможности моего приложения.
В моих настройках сборки у меня было это:
Пути поиска заголовка : ../../build/include
Пути поиска в библиотеке : ../../build/lib/arm
У меня ничего не было в Другие флаги линкера
Следуя сообщениям, я попытался удалить библиотеку исключительно для симулятора, и в настоящее время у меня есть:
Ошибка компиляции меняется, и теперь это «Vuforia / Vuforia.h файл не найден» в одном из моих контроллеров представления, которые используют библиотеку lib.
Я позаботился об этом и добавил инструкцию препроцессора.
#if !(TARGET_OS_SIMULATOR)
....
#endif
Это работает для многих из них, но одна ошибка все еще там, даже если она находится внутри блока, как показано выше
#if !(TARGET_OS_SIMULATOR)
#import <QuartzCore/QuartzCore.h>
#import <OpenGLES/ES2/gl.h>
#import <OpenGLES/ES2/glext.h>
#import <sys/time.h>
#import <Vuforia/Vuforia.h>
#import <Vuforia/State.h>
#import <Vuforia/Tool.h>
#import <Vuforia/Renderer.h>
#import <Vuforia/TrackableResult.h>
#import <Vuforia/VideoBackgroundConfig.h>
...
#endif
В конце я тоже попытался поиграть с Другие флаги линкера но это не помогает …
Можете ли вы помочь мне найти способ привязать библиотеку только для устройства iOS и запустить приложение на симуляторе?
Спасибо !
Я бы не стал устанавливать разные пути поиска заголовка.
Используйте TargetConditionals.h, как вы упомянули, чтобы отключить Vuforia при сборке для симулятора. Затем, чтобы позаботиться о связывании, я предлагаю использовать OTHER_LDFLAGS вместо фазы сборки «Связь с библиотеками», поскольку вы не можете обусловить эту фазу сборки платформой. Вы можете легко сделать это с помощью xcconfig, например:
OTHER_LDFLAGS = -framework Vuforia
OTHER_LDFLAGS[sdk=*simulator] =
Других решений пока нет …