16

我正在使用带有xcconfig文件的 Xcode 3.2。这些文件按目标组织。例如,我有一个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.xcconfigthis question所示,以下方法应该有效:

GCC_PREPROCESSOR_DEFINITIONS = "$(GCC_PREPROCESSOR_DEFINITIONS) DEBUG"

这在 Xcode 3.2 中不起作用。Xcode 文档还明确提到不能修改变量,只能覆盖它们。

你们将如何解决这个问题?

4

4 回答 4

19

我们过去解决这个问题的方法是让每一层组成定义的一个子集,然后在叶级 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)

(使子集变量详细的优点是它们在字典上与它们用于组合的值相似,从而使它们更容易在配置文件中找到。)

于 2009-09-09T23:30:05.193 回答
5

您还可以在 .xcconfig 文件中使用以下格式。(适用于 xcode 4,未在 xcode 3 中测试)。它只是一个示例,似乎适用于所有设置。

ARCHS=i386 x86_64
ARCHS[config=Debug]=i386
ARCHS[config=Release]=i386 x86_64
于 2013-01-07T14:52:01.663 回答
2

以下应该工作:

xcodebuild GCC_PREPROCESSOR_DEFINITIONS='$(value) BAR=1'
于 2012-09-27T19:21:48.233 回答
-2

使用 $(inherited) 怎么样?

GCC_PREPROCESSOR_DEFINITIONS = $(inherited) 调试

于 2011-10-26T18:38:30.807 回答