2009-09-09 52 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.xcconfig文件中添加DEBUG預處理器定義。如圖所示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 – 2014-08-20 10:57:03

-1

如何使用$(繼承)?

GCC_PREPROCESSOR_DEFINITIONS = $(繼承)DEBUG

+2

如果它可以工作,它會很好,但不幸的是它不在.xcconfig文件中。 – 2012-08-14 18:10:32

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