Я пытаюсь создать несколько целей в XCode, чтобы упростить процесс создания «облегченной» и «про» версии моего приложения. Теоретически это здорово, и я могу передать определения GCC_PREPROCESSOR_DEFINITIONS
для использования в моем коде. Тем не менее, у меня возникают проблемы с тем, чтобы заставить его работать из-за ошибки при попытке запустить вторую цель в симуляторе: Failed to launch simulated application: Unknown error.
Вот простой процесс, который я использую для создания дополнительной цели:
- Добавить #ifdef MYAPP_PRO в исходные файлы, чтобы изменить поведение в зависимости от версии приложения pro / lite (и убедиться, что приложение работает должным образом)
- Выберите
Project
> New Target...
из меню и выберите «Приложение для сенсорного ввода Cocoa» (с именем MyAppPro ")
- Редактировать новые настройки цели; добавить
GCC_PREPROCESSOR_DEFINITIONS
пользовательскую настройку и установить значение «MYAPP_PRO» (без кавычек)
- Установить активную цель на «MyAppPro»; построить и запустить.
Failed to launch simulated application: Unknown error.
- Скопируйте все настройки из Info.plist в MyAppPro-Info.plist и повторите попытку
Failed to launch simulated application: Unknown error.
Сборка завершается очень хорошо, но я не могу запустить симулятор.
Редактируя файл project.pbxproj в каталоге .xcodeproj, я замечаю, что между настройками сборки двух определений целей есть некоторые ключевые различия. Я попытался вручную отредактировать файл, но, должно быть, сделал что-то не так, потому что не смог загрузить его в Xcode позже.
Исходные настройки сборки "Debug" для цели:
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = YES;
ARCHS = "$(ARCHS_STANDARD_32_BIT)";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
GCC_C_LANGUAGE_STANDARD = c99;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
ONLY_ACTIVE_ARCH = YES;
PREBINDING = NO;
SDKROOT = iphoneos2.2.1;
};
Новые настройки сборки Debug для цели MyAppPro:
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CODE_SIGN_IDENTITY = "iPhone Developer";
COPY_PHASE_STRIP = NO;
GCC_DYNAMIC_NO_PIC = NO;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/UIKit.framework/Headers/UIKit.h";
INFOPLIST_FILE = "MyAppPro-Info.plist";
INSTALL_PATH = "$(HOME)/Applications";
OTHER_LDFLAGS = (
"-framework",
Foundation,
"-framework",
UIKit,
);
PREBINDING = NO;
PRODUCT_NAME = MyAppPro;
SDKROOT = iphoneos2.2.1;
};