Objective c 为Xcode设置用户特定的预处理器宏
我希望能够有特定的代码块,例如Objective c 为Xcode设置用户特定的预处理器宏,objective-c,xcode,xcode4.5,Objective C,Xcode,Xcode4.5,我希望能够有特定的代码块,例如#ifdef SOME_VARIABLE,如果项目是在特定用户的机器上构建的,则变量的值将在项目的构建时填充 这可能吗?您可以在“预处理器宏”生成设置中设置该值。在构建设置中设置“SOME_VARIABLE=${USER}”相当于在代码中定义某个_变量“jappleeed” 然后在代码中可以执行以下操作: #define jappleseed 1 #define sjobs 2 #if DEV_USER == jappleseed NSLog(@
#ifdef SOME_VARIABLE
,如果项目是在特定用户的机器上构建的,则变量的值将在项目的构建时填充
这可能吗?您可以在“预处理器宏”生成设置中设置该值。在构建设置中设置“SOME_VARIABLE=${USER}”相当于在代码中定义某个_变量“jappleeed”
然后在代码中可以执行以下操作:
#define jappleseed 1
#define sjobs 2
#if DEV_USER == jappleseed
NSLog(@"Hi Jhonny");
#elif DEV_USER == sjobs
NSLog(@"Hi Steve");
#endif
注意:这是一个人为的例子,如果您真的想在代码中使用字符串“jappleseed”,那么您应该使用Info.plist,而不是在Xcode 6中定义(至少)您可以将用户名作为宏的名称的一部分包含在生成设置的预处理器宏的部分中:
ENV\u USER\u$(USER)=1
(这将定义宏ENV\u USER\u myusername
)
然后,在代码中,可以使用
#if ENV_USER_myusername
...
#endif
定义中的=1
可能是多余的,因为Xcode似乎默认将变量定义为true
。我们把它放在那里只是为了安全起见,可以使用#if
或#ifdef
。这样就不必担心它可能被定义,而是计算为false
,在这种情况下#ifdef
仍然有效,但#如果不起作用。当然,您可以根据需要将其定义为任何值。在swift中:将DEBUG_$(用户)添加到“活动编译条件”
无法指定值能否使用Info.plist而不是#ifdef?你真的需要以不同的方式构建吗?如果是这样,您可以使用不同的构建配置吗?有些变量会有多少不同。我正试图做一些类似于这篇文章的事情:但我在代码中看不到宏的值。但是你是在进行条件编译还是只需要代码中的值。我使用构建脚本在Info.plist中设置版本号minor和major以及git散列,然后读取代码中的Info.plist以获取值并显示它们。请参阅我在帖子中倒数第二个答案:我想根据特定用户名有条件地编译一些代码。我尝试了这一点,但没有在构建设置中获得设置的值,只有定义的名称。我在Xcode项目设置窗格中看到环境值扩展为预期值,但当我试图打印出定义值时,看到的是变量的名称,而不是值。