Подтвердить что ты не робот

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

Если я добавил пользовательский параметр в моей конфигурации сборки, как я могу прочитать этот параметр в моем Objective-C коде?

У меня есть два файла в моем проекте, debug.plist и release.plist. Я хочу, чтобы мой файл MainApp.m читал один из этих файлов, на основе которого выполняется конфигурация сборки. Я установил пользовательский параметр с именем "filename" в конфигурациях Debug и Release, чтобы указать на соответствующий файл. Но я не знаю, как мой файл MainApp.m может читать переменную имени файла из текущей текущей конфигурации.

4b9b3361

Ответ 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 и т.д. для предоставления условного кода или значений.

Надеюсь, что это поможет.