4

我希望能够拥有特定的代码块,例如,#ifdef SOME_VARIABLE如果项目是在特定用户的机器上构建的,那么变量的值将在项目的构建时填充。

那可能吗?

4

3 回答 3

5

您在“预处理器宏”构建设置中设置值。在构建设置中设置 "SOME_VARIABLE=${USER}" 等效于代码中的 #define SOME_VARIABLE "jappleseed"。

然后在你的代码中你可以这样做:

#define jappleseed 1
#define sjobs      2

#if DEV_USER == jappleseed
    NSLog(@"Hi Jhonny");
#elif DEV_USER == sjobs
    NSLog(@"Hi Steve");
#endif

注意:这是一个人为的例子,如果你真的想在你的代码中使用字符串“jappleseed”,你应该使用 Info.plist 而不是#define

于 2013-05-04T00:15:52.263 回答
2

在 Xcode 6(至少)中,您可以将您的用户名作为宏名称的一部分包含在 Build Settings 的处理器部分中:

ENV_USER_$(USER)=1(这将定义宏ENV_USER_myusername

然后,在您的代码中,您可以使用

#if ENV_USER_myusername
...
#endif

定义中的=1可能是多余的,因为 Xcode 似乎将变量定义为true默认值。我们把它放在那里只是为了安全起见并且能够使用#if#ifdef。这样就不用担心它可能被定义,但评估为false,在这种情况下#ifdef仍然可以工作但#if不会。当然,您可以将其定义为您希望的任何值,具体取决于您想要什么。

于 2015-05-22T12:20:13.593 回答
2

迅速:将 DEBUG_$(USER) 添加到“活动编译条件”

没有办法赋值

于 2017-09-05T13:00:08.290 回答