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