2009-09-09 15 views
15

Używam Xcode 3.2 z plikami xcconfig. Pliki są uporządkowane według celu. Na przykład mam plik debug.xcconfig i jeden release.xcconfig. Oba używają wspólnych ustawień, więc dodałem plik shared.xcconfig, który jest zawarty w obu.Xcode: Jak ustawić środowisko debugowania za pomocą wielu plików xcconfig?

Plik shared.xcconfig wygląda następująco:

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

Plik debug.xcconfig wygląda następująco:

#include "Shared.xcconfig" 
GCC_OPTIMIZATION_LEVEL = 0 

Teraz chciałbym dodać definicję DEBUG preprocesora w pliku debug.xcconfig. Jak pokazano na this question następujący sposób ma pracować:

GCC_PREPROCESSOR_DEFINITIONS = "$(GCC_PREPROCESSOR_DEFINITIONS) DEBUG" 

To nie działa w Xcode 3.2. Dokumentacja Xcode wyraźnie wspomina również, że modyfikowanie zmiennych nie jest możliwe, można je tylko zastąpić.

Jak wy rozwiązać ten problem?

Odpowiedz

17

Sposób, w jaki zostały rozwiązane w przeszłości jest, aby każda warstwa komponować podzbiór definicji, a następnie doprowadzić je wszystkie razem w xcconfig liść poziomu.

W shared.xcconfig:

GCC_PREPROCESSOR_DEFINITIONS_SHARED = qFoo qBar qBaz 

W debug.xcconfig:

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

(Zaletą wytwarzania zmiennych podzbioru rozwlekły jest to, że są one leksykograficznie zbliżona do wartości są one wykorzystywane, aby utworzyć, co czyni je łatwiej znaleźć w pliku konfiguracyjnym.)

+0

Innym rozwiązaniem, jeśli nie można łatwo zmienić nazwę zmiennej w xcconfig dołączyć, jest ustawienie xcconfig chcesz dołączyć do projektu, a ty bardziej specyficzny dla jednego celu. To sprawi, że dziedziczenie będzie działać. Zobacz ten komentarz emisyjnej GitHub aby uzyskać więcej informacji: https://github.com/CocoaPods/CocoaPods/issues/1212#issuecomment-52272400 –

-1

Jak o użyciu $ (dziedziczone)?

GCC_PREPROCESSOR_DEFINITIONS = $ (dziedziczone) DEBUG

+2

byłoby miło, gdyby to działało, ale niestety nie w plikach .xcconfig. –

1

następujące powinny działać:

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

Można także użyć następującego formatu w pliku .xcconfig. (działa w xcode 4, nie testowane w xcode 3). To tylko przykład, wydaje się działać dla wszystkich ustawień.

ARCHS=i386 x86_64 
ARCHS[config=Debug]=i386 
ARCHS[config=Release]=i386 x86_64 
Powiązane problemy