我正在使用带有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.xcconfig
预处理器定义。如this question所示,以下方法应该起作用:
GCC_PREPROCESSOR_DEFINITIONS = "$(GCC_PREPROCESSOR_DEFINITIONS) DEBUG"
这在Xcode 3.2中不起作用。 Xcode文档还明确提到修改变量是不可能的,你只能覆盖它们。
你们怎么解决这个问题?
答案 0 :(得分: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)
(使子集变量冗长的优点是它们在词典上与它们用于编写的值类似,使它们更容易在配置文件中找到。)
答案 1 :(得分:5)
您还可以在.xcconfig文件中使用以下格式。 (适用于xcode 4,未在xcode 3中测试)。它只是一个例子,似乎适用于所有设置。
ARCHS=i386 x86_64
ARCHS[config=Debug]=i386
ARCHS[config=Release]=i386 x86_64
答案 2 :(得分:2)
以下应该工作:
xcodebuild GCC_PREPROCESSOR_DEFINITIONS='$(value) BAR=1'
答案 3 :(得分:-2)
如何使用$(继承)?
GCC_PREPROCESSOR_DEFINITIONS = $(继承)DEBUG