Xcode 4:在依赖目标中定义预处理器宏

时间:2011-07-15 11:40:03

标签: objective-c xcode4 c-preprocessor static-libraries

我有一个名为 MyApp 的应用,它链接到静态库 MyLibrary 我已将 MyLibrary 项目添加到Xcode,并将 MyLibrary 目标添加到 MyApp 的目标依赖项中。 所有这一切都很好,我可以设置断点,我很高兴。

问题是我想在库中使用条件日志:

#ifdef DEBUG
#   define  MYDebug(msg, ...) NSLog(@"\nDEBUG -> %@ \n(%s:%d)",[NSString stringWithFormat:msg, ## __VA_ARGS__], __PRETTY_FUNCTION__,__LINE__);
#else
#   define MYDebug(msg, ...)
#endif

所以我的库有两个构建配置: - 调试在“预处理器宏”中的目标构建设置中有“DEBUG = 1” - Prod 什么都没有

MyLibrary 目标设置为使用Debug构建配置构建。

如果我构建静态库(.a)并将其包含在项目中,这可以正常工作。 但是如果它是由目标依赖构建的,那么似乎没有定义DEBUG(MYDebug不会记录任何东西)。

我还尝试在 MyApp 的构建设置中设置DEBUG = 1,但它不起作用。

是否有我遗漏的东西或其他方法呢?

1 个答案:

答案 0 :(得分:8)

它应该只是“DEBUG”而不是“DEBUG = 1”。此外,要使用需要对象赋值(NSString等)的宏,您需要转义大多数字符,如@"等。

以下是xCode 4.1中我的工作项目的屏幕截图:

enter image description here