2010-04-18 5 views
1

Я собираюсь создать приложение Mac, написанное в Obj-C с Xcode. Для аргументации предположим, что у него будет 10 дополнительных функций. Мне нужен способ включить или отключить эти функции для создания пользовательских сборок приложения. Эти сборки будут автоматизированы (скорее всего, через терминал Mac OS X), поэтому мне нужно будет указать, какие из этих функций включены/отключены во время сборки (идеально подходят конфигурационный файл или аргументы CLI.)Создать пользовательские сборки проекта Xcode

Итак, каков наилучший способ добиться этого? Я пытаюсь спланировать это, прежде чем начинать кодирование, чтобы в моей базе кода было надлежащее разделение, чтобы эти функции могли приходить и уходить. В идеале пользовательская сборка будет содержать только скомпилированный код для функций, которые он должен иметь. Другими словами, я не хочу всегда компилировать все функции и определять их во время выполнения.

ответ

3

Для этой цели вы можете использовать конфигурации Xcode; например, для каждой конфигурации вы могли бы включить другой заголовок префикса. Затем вы можете запускать сборки из командной строки через xcodebuild.

Если вы предпочитаете подход к конфигурационному файлу, вы можете использовать файл .xcconfig, чтобы определить какие-либо настройки сборки Xcode.

Руководство по установке сборки Xcode describes Оба этих подхода.

+0

Я не думаю, что создание конфигурации для каждой комбинации вручную очень правдоподобно: HTTP : //www.wolframalpha.com/input/? i = комбинации + из + 10 I d не хочу делать 1,024 configs :-) Но я рассмотрю идею файла .xcconfig. Благодаря! – macinjosh

+0

@macinjosh Вы нашли способ сделать это? –

0

использовать #ifdef и флаг -D под флагами компилятора, чтобы контролировать, скомпилирован ли материал в или из. Вы можете настроить множество разных конфигураций таким образом, если хотите, и просто настроить конфигурацию сборки xcode.

#include <stdio.h> 

int 
main (void) 
{ 
#ifdef TEST 
    printf ("Test mode\n"); 
#endif 
    printf ("Running...\n"); 
    return 0; 
} 

выход 1:

$ gcc -Wall -DTEST dtest.c 
$ ./a.out 
Test mode 
Running... 

выход 2:

$ gcc -Wall dtest.c 
$ ./a.out 
Running... 

Источник: http://www.network-theory.co.uk/docs/gccintro/gccintro_34.html

Смежные вопросы