使用宏访问CFBundleIdentifier

时间:2013-06-17 20:22:09

标签: ios macros llvm target

我需要检查宏中的CFBundleIdentifier以检查正在运行的目标,以确定我是否可以导入文件,但我无法弄明白。

#if TARGET_IS_XYZ
#import SomeFile.h
#endif

我试过了:

#define TARGET_IS_XYZ [[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleIdentifier"] isEqualToString:@"com.app.xyz"]

然后意识到[NSBundle maindBundle]直到运行时才可用,所以我不能使用它。有没有其他方法可以获取CFBundleIdentifier或检查哪个目标正在运行?

P.S。按目标我的意思是app目标,而不是iOS或OSX。

1 个答案:

答案 0 :(得分:0)

您的宏可能通过检查TARGETNAME或PROJECT环境变量来实现您的意图。或者,您可以设置每个构建变量以设置唯一的环境变量。 还有一些方法(其语法现在让我失望):在构建时使用环境变量和宏来设置info.plist文件中的值,这样您就可以从单点管理appname和文件包含。