Как я могу получить доступ к пользовательской настройке сборки Xcode?
Если я добавил пользовательский параметр в моей конфигурации сборки, как я могу прочитать этот параметр в моем Objective-C коде?
У меня есть два файла в моем проекте, debug.plist
и release.plist
. Я хочу, чтобы мой файл MainApp.m
читал один из этих файлов, на основе которого выполняется конфигурация сборки. Я установил пользовательский параметр с именем "filename" в конфигурациях Debug и Release, чтобы указать на соответствующий файл. Но я не знаю, как мой файл MainApp.m
может читать переменную имени файла из текущей текущей конфигурации.
Ответы
Ответ 1
Вот что я сделал, я не уверен на 100%, если это то, что вам нужно:
- Перейдите на панель настроек сборки и выберите значок шестеренки в левом нижнем углу: добавьте пользовательскую настройку
-
Создайте свой пользовательский параметр, например:
MY_LANG -> en_us
-
Затем в настройке макроса препроцессора вы можете ссылаться на это значение:
LANGCODE="$(MY_LANG)"
Теперь вы можете обратиться к LANGCODE во все ваши исходные файлы, и это будет то, что вы заполнили в настройках пользовательской сборки. Я понимаю, что здесь существует уровень косвенности, но это намеренно в моем случае: мой проект XCode содержит кучу разных целей/конфигураций с их собственными макросами препроцессора. Я не хочу заниматься всеми этими вопросами, просто чтобы изменить код языка. Фактически, я определяю код языка на уровне проекта. Я также использую MY_LANG в нескольких сценариях, поэтому макрос препроцессора не будет делать. Может быть, умнее, но это работает для меня.
Ответ 2
Ваш код не может прочитать произвольные настройки сборки. Вам нужно использовать макросы препроцессора.
EDIT: например, в целевых настройках конфигурации Debug вы можете добавить DEBUGGING=1
в настройке сборки макросов препроцессора и не определять DEBUGGING в конфигурации Release. Затем в исходном коде вы можете делать такие вещи, как:
#if DEBUGGING
use this file
#else
use the other one
#endif
Ответ 3
Я попробовал zmippie, но это не сработало для меня.
Я работал с этим:
${MY_LANG}
Ответ 4
Вы можете получить доступ к настройкам пользовательской сборки во время выполнения (как это предлагается в комментарии от @JWWalker)
-
Добавьте запись в свой Info.plist
файл и установите его в пользовательскую настройку сборки
MySetting -> ${MYSETTING}
-
Прочитайте его значение из кода
[[NSBundle mainBundle] objectForInfoDictionaryKey:@"MySetting"];
Ответ 5
Если кто-то еще застрял в поиске макросов препроцессора, найдите раздел Apple LLVM - Preprocessing в настройках сборки. Под ним вы увидите раздел "Макросы препроцессора".
Здесь по умолчанию Xcode вставляет макрос DEBUG = 1 для конфигурации сборки отладки.
Вы можете добавить свой собственный здесь и предоставить им разные значения для отладки, выпуска и любых настраиваемых конфигураций сборки, которые могут быть у вас.
Чтобы добавить один, дважды щелкните текущий список значений для нужной конфигурации, и на нем отобразится красивый маленький редактор с одним макросом в каждой строке. Просто добавьте свое собственное имя макроса и придайте ему значение так же, как и DEBUG.
Они могут быть проверены во время фазы сборки препроцессора с использованием #if, #ifdef и т.д. для предоставления условного кода или значений.
Надеюсь, что это поможет.