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

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 также явно упоминает, что изменение переменных невозможно, их можно только перезаписать.

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

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

Ответ 3

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

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

Ответ 4

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

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