xcode4:根据目标生成

xcode4:根据目标生成,xcode4,preprocessor,Xcode4,Preprocessor,我的项目有两个目标:一个是应用程序,另一个是UT。我想根据目标返回一个方法的不同结果。 我遵循了这一点,但失败了 我尝试了两种方法: 我使用TARGET\u NAME。我将OTHER\u CFLAGS设置为在项目设置中包含-DTARGET\u NAME=${TARGET\u NAME}。然后在代码中: 然而,TARGET\u NAME==PhotoAPI似乎总是正确的。 2.我还使用了预处理器宏,我为APP targett设置了APP,为UT设置了UT。在守则中: NSString *retu

我的项目有两个目标:一个是应用程序,另一个是UT。我想根据目标返回一个方法的不同结果。
我遵循了这一点,但失败了

我尝试了两种方法:

  • 我使用
    TARGET\u NAME
    。我将
    OTHER\u CFLAGS
    设置为在项目设置中包含
    -DTARGET\u NAME=${TARGET\u NAME}
    。然后在代码中:
  • 然而,
    TARGET\u NAME==PhotoAPI
    似乎总是正确的。
    2.我还使用了
    预处理器宏
    ,我为APP targett设置了
    APP
    ,为UT设置了
    UT
    。在守则中:

    
    NSString *returnStr = nil;
    #ifdef APP
        returnStr = [NSString stringWithFormat:@"%@\'%@\');",EventFunStr,dataStr];
    #elsedef UT
        returnStr = [NSString stringWithFormat:@"%@", dataStr];
    #else
        returnStr = nil;
    #endif
    return returnStr;
    
    它总是返回
    nil

    我使用的是
    llvmgcc4.2


    有人能帮我吗?

    问题可能在于您定义标志的方式 这里有一个很好的文档,介绍如何仅在调试时使用它调用NSLog

    它在评论中说 如果要使用GCC_预处理器_定义而不是其他_cflag,
    确保使用“DEBUG=1”格式,而不是刚刚通知的“-DDEBUG=1”

    。我今晚会检查~
    
    NSString *returnStr = nil;
    #ifdef APP
        returnStr = [NSString stringWithFormat:@"%@\'%@\');",EventFunStr,dataStr];
    #elsedef UT
        returnStr = [NSString stringWithFormat:@"%@", dataStr];
    #else
        returnStr = nil;
    #endif
    return returnStr;