2009-09-09 50 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