Xcode: Как установить среду отладки с несколькими файлами xcconfig?

Я использую Xcode 3.2 с xcconfig файлы. Файлы организованы по цели. Например, у меня есть debug.xcconfig файл и release.xcconfig один. Оба используют общие настройки, поэтому я добавил shared.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 файл. Как показано в этом вопросе, следующий метод должен работать:

GCC_PREPROCESSOR_DEFINITIONS = "$(GCC_PREPROCESSOR_DEFINITIONS) DEBUG"

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

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

4 ответа

Решение

То, как мы работали с этим в прошлом, состоит в том, чтобы каждый слой составлял подмножество определений, а затем объединял их все вместе на уровне листа 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)

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

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

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

Следующее должно работать:

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

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

GCC_PREPROCESSOR_DEFINITIONS = $(унаследовано) DEBUG

Другие вопросы по тегам