我如何在Xcode 4中定义预处理宏?

23

我的应用有两个目标(一个是精简版,一个是专业版),我想在每个版本的代码中集成一些微妙的差别(例如专业版不会显示任何iAd广告条)。

我一直在寻找方法,发现最简单的方法是通过使用预处理器宏来完成。我面临的问题是如何在Xcode 4中设置它们。我想在一个目标中设置一个名为'PRO_VERSION' 的宏,在另一个目标中设置'LITE_VERSION'。

下面是我打算如何使用它们的示例:

#ifdef PRO_VERSION
    // Hide ad banners
#else
    // Show ad banners
#endif

请查看以下链接: https://dev59.com/Y2435IYBdhLWcg3wrSPN - Carter
这与我想要的略有不同 - 虽然谢谢。 - user843337
2个回答

40

您需要更改的构建设置称为“预处理器宏”,可以在“项目设置”窗格的“构建设置”选项卡中找到(使用搜索框进行查找)。依次选择项目设置窗格左侧的每个目标,然后修改“预处理器宏”设置。

该设置被指定为以空格分隔的预处理器宏列表,格式为“foo”或“foo = bar”。


谢谢你的帮助。我需要将它们添加到调试、发布还是两者都要添加? - user843337
需要同时拥有专业版和轻量版才能在调试和发布配置下正确编译。 - Robin Summerhill
1
只是为了澄清。您将选择您的“Pro”目标,然后将“PRO_VERSION”添加到调试和发布的预处理器宏设置中。您不需要为“Lite”目标做任何事情。 - Robin Summerhill
有没有一种方法可以为所有配置定义某些内容?在调试和发布中复制这些内容似乎完全是错误的;调试和发布应该继承自某些东西,并且只应该定义与共享集合不同的内容。 - James Moore

3

我现在没有使用Mac电脑,所以无法提供详细的步骤,但我相信这个方法应该是正确的,虽然可能不如我平时详细。创建一个新的构建目标,转到此新目标的配置屏幕。应该有一个类似于编译选项的选项卡,在这个选项卡中应该有其他编译器标志的一行。在那里,加入-DPRO_VERSION


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接