2009-09-09 1 views
15

Я использую Xcode 3.2 с xcconfig файлами. Файлы организованы с помощью целевого объекта. Например, у меня есть файл debug.xcconfig и release.xcconfig. Оба используют общие настройки, поэтому я добавил файл shared.xcconfig, который включен обоими.Xcode: Как установить среду отладки с несколькими файлами xcconfig?

shared.xcconfig файл выглядит следующим образом:

GCC_C_LANGUAGE_STANDARD = c99 
GCC_WARN_ABOUT_RETURN_TYPE = YES 
GCC_WARN_UNUSED_VARIABLE = YES 
GCC_PREPROCESSOR_DEFINITIONS = SOME_COMMON_DEFINITIONS 

Файл debug.xcconfig выглядит следующим образом:

#include "Shared.xcconfig" 
GCC_OPTIMIZATION_LEVEL = 0 

Теперь я хотел бы добавить определение в DEBUG препроцессора в файле debug.xcconfig. Как показано в this question, следующий метод должен работать:

GCC_PREPROCESSOR_DEFINITIONS = "$(GCC_PREPROCESSOR_DEFINITIONS) DEBUG" 

Это не работает в Xcode 3.2. Документация Xcode также явно упоминает, что изменение переменных невозможно, их можно только перезаписать.

Как вы решите эту проблему?

ответ

17

То, как мы это решали в прошлом, состоит в том, чтобы каждый слой составлял подмножество определений, а затем приводил их все вместе на xcconfig на уровне листа.

В shared.xcconfig:

GCC_PREPROCESSOR_DEFINITIONS_SHARED = qFoo qBar qBaz 

В debug.xcconfig:

GCC_PREPROCESSOR_DEFINITIONS_DEBUG = qDebug 
GCC_PREPROCESSOR_DEFINITIONS = $(GCC_PREPROCESSOR_DEFINITIONS_SHARED) $(GCC_PREPROCESSOR_DEFINITIONS_DEBUG) 

(Преимущество, чтобы сделать переменные подмножества многословным является то, что они являются лексически аналогично значению они используются, чтобы составить, что делает их проще найти в файле конфигурации.)

+0

Другим решением, если вы не можете легко изменить имя переменной в xcconfig вы включаете, чтобы установить xcconfig вы хотите включить в проект, и вы более конкретный один для мишени. Это сделает работу наследования. См. Этот комментарий к проблеме Github для получения дополнительной информации: https://github.com/CocoaPods/CocoaPods/issues/1212#issuecomment-52272400 –

-1

Как насчет использования $ (унаследованного)?

GCC_PREPROCESSOR_DEFINITIONS = $ (наследуется) DEBUG

+2

Было бы неплохо, если бы это сработало, но, к сожалению, оно не в файлах .xcconfig. –

1

должно работать:

xcodebuild GCC_PREPROCESSOR_DEFINITIONS='$(value) BAR=1' 
5

Вы также можете использовать следующий формат файла .xcconfig. (работает в xcode 4, не тестируется в xcode 3). Его единственный пример, похоже, работает для всех настроек.

ARCHS=i386 x86_64 
ARCHS[config=Debug]=i386 
ARCHS[config=Release]=i386 x86_64