Как заставить компилятор Xcode игнорировать библиотеку при сборке для симулятора iOS

Я получаю серию ошибок компоновщика при создании специальной библиотеки для симулятора iOS. Источником проблемы, похоже, является архитектура, для которой была создана библиотека, которая, по-видимому, вызывает проблемы при компиляции для симулятора iOS. Специальная библиотека - это библиотека дополненной реальности Aurasma.

Мой вопрос будет таким: есть ли способ не скомпилировать библиотеку, когда код компилируется для симулятора iOS? Хотя у меня есть некоторый код, который зависит от этой библиотеки, я мог бы легко использовать оператор #ifdef, чтобы использовать этот код, только когда НЕ в симуляторе iOS.

Я могу легко признать, что я не могу понять полный корень проблемы. Я пытался решить некоторые проблемы, используя флаг компоновщика -weak_library без какого-либо определенного прогресса или успеха.

3 ответа

Решение

В XCode вы можете настроить отдельный список библиотек для каждого iOS/ симулятора SDK. Вот шаг для настройки этого:

  • Нажмите на свой peoject->Target->Build Settings->Linking-> Другие флаги компоновщика
  • Нажмите "+" для вашей конфигурации сборки (например, Debug) в разделе "Другие флаги компоновщика".
  • Для новой записи в вашей конфигурации сборки выберите "Any iOS Simulator SDK" и удалите библиотеку, которую вы не хотите связывать.
  • Вы можете добавить столько записей, сколько хотите, нажав кнопку "+" в конфигурации сборки и настроить библиотеки, которые вы хотите для любого конкретного SDK.

Тот же метод может быть применен для других настроек в XCode для цели.

У меня была та же проблема: я настроил проект единства для компиляции в SDK симулятора, затем в Xcode я изменил настройки target>Build для компиляции в выпуск, если я хорошо помню, и бинго, проект работал, и у меня был неподписанный ипа файл.

//:configuration = ReleaseForProfilingCODE_SIGN_IDENTITY =CODE_SIGN_IDENTITY[sdk=iphoneos*] =DEVELOPMENT_TEAM =PROVISIONING_PROFILE_SPECIFIER[sdk=iphonesimulator*] =PROVISIONING_PROFILE[sdk=iphonesimulator*] =

//:configuration = ReleaseCODE_SIGN_IDENTITY =CODE_SIGN_IDENTITY[sdk=iphoneos*] =DEVELOPMENT_TEAM =PROVISIONING_PROFILE_SPECIFIER[sdk=iphonesimulator*] =PROVISIONING_PROFILE[sdk=iphonesimulator*] =

//:configuration = DebugCODE_SIGN_IDENTITY =CODE_SIGN_IDENTITY[sdk=iphoneos*] =DEVELOPMENT_TEAM =PROVISIONING_PROFILE_SPECIFIER[sdk=iphonesimulator*] =PROVISIONING_PROFILE[sdk=iphonesimulator*] =

//:configuration = ReleaseForRunningCODE_SIGN_IDENTITY =CODE_SIGN_IDENTITY[sdk=iphoneos*] =DEVELOPMENT_TEAM =PROVISIONING_PROFILE_SPECIFIER[sdk=iphonesimulator*] =PROVISIONING_PROFILE[sdk=iphonesimulator*] =

//:completeSettings = некоторые CODE_SIGN_ENTITLEMENTSCODE_SIGN_IDENTITYCODE_SIGN_STYLEDEVELOPMENT_TEAMOTHER_CODE_SIGN_FLAGS PROVISIONING_PROFILE_SPECIFIER PROVISIONING_PROFILE

Другие вопросы по тегам