【问题标题】:Xcode: How to set debug environment with multiple xcconfig files?Xcode:如何使用多个 xcconfig 文件设置调试环境?
【发布时间】:2009-09-09 23:17:50
【问题描述】:

我正在使用带有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.xcconfig 文件中添加一个DEBUG 预处理器定义。如this question所示,下面的方法应该可以工作:

GCC_PREPROCESSOR_DEFINITIONS = "$(GCC_PREPROCESSOR_DEFINITIONS) DEBUG"

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

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

【问题讨论】:

    标签: xcode xcconfig


    【解决方案1】:

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

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

    【讨论】:

    • 另一种解决方案,如果您无法轻松编辑包含的 xcconfig 中的变量名称,则为项目设置要包含的 xcconfig 并为目标设置更具体的 xcconfig。这将使继承工作。有关更多信息,请参阅此 Github 问题评论:github.com/CocoaPods/CocoaPods/issues/…
    【解决方案2】:

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

    ARCHS=i386 x86_64
    ARCHS[config=Debug]=i386
    ARCHS[config=Release]=i386 x86_64
    

    【讨论】:

      【解决方案3】:

      以下应该可以工作:

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

      【讨论】:

        【解决方案4】:

        使用 $(inherited) 怎么样?

        GCC_PREPROCESSOR_DEFINITIONS = $(inherited) 调试

        【讨论】:

        • 如果它工作会很好,但不幸的是它不在 .xcconfig 文件中。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-06
        • 2013-05-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多