xcconfig文件中的预处理器宏

时间:2012-09-30 17:22:13

标签: iphone objective-c ios xcode xcconfig

是否可以在配置文件中使用宏?我希望实现以下目标:

if iPad
set variable to 1
else
set variable to 0

这可能吗?我宁愿不使用脚本。

3 个答案:

答案 0 :(得分:8)

您通常应该在运行时而不是编译时检查它。见iOS - conditional compilation (xcode)

如果你不这样做,我通常建议使用@Robert Vojta所暗示的不同目标。

那就是说,我可以想象这在某些共享代码中有用的情况。所以......

您可以使用名为TARGETED_DEVICE_FAMILY的xcconfig变量。它为iPhone和iPod Touch返回1,为iPad返回2。这可以用来创建一种宏。我不强烈推荐这种方法,但这是你如何做到的。假设你试图设置一个名为SETTINGS的值:

// Family 1 is iPhone/iPod Touch. Family 2 is iPad
SettingsForFamily1 = ...
SettingsForFamily2 = ...
SETTINGS = $(SettingsForFamily$(TARGETED_DEVICE_FAMILY))

我在我的项目中已经完成了几次(其他问题,而不是iPad检测)。每次我完成它,更多的想法允许我删除它并以更简单的方式(通常找到另一种方式来构建我的项目以消除需要)。但这是一种在xcconfig中创建条件的技术。

答案 1 :(得分:4)

AFAIK这是不可能的。但是如果你想解决简单的任务 - 很多常见的设置而且只有很少的变量有不同的值,你可以这样做:

<强> generic.xcconfig:

settings for both configs

<强> ipad.xcconfig:

#include "generic.xcconfig"
ipad-specific-settings

<强> iphone.xcconfig

#include "generic.xcconfig"
iphone-specific-settings

这可以解决您的病情需求。我经常使用这种模式。

答案 2 :(得分:0)

那是不可能的。配置文件未经过预处理(和编译)。你想做什么?