在编译时检查框架是否存在?

joh*_*ham 17 frameworks objective-c compile-time ios

我正在开发一个可以选择使用闭源框架的开源项目.如果闭源框架包含在项目中,则会有其他功能.但是,如果框架未包含在项目中,则项目仍应正确编译.

如果框架包含在项目中,如何在编译时检查

基本上,我想做这样的事情:

#ifdef _MY_FRAMEWORK_EXISTS
#import <MyFramework/MyFramework.h>
#endif
Run Code Online (Sandbox Code Playgroud)

我已经看过2年前的老问题,就像这个问题一样,但没有答案浮出水面,所以我现在可能会遗漏一些新东西.

我不想在运行时通过检查NSClassFromString(),因为当我尝试导入时它将在编译时失败MyFramework并且它不存在.

Gre*_*ker 19

您可以使用__has_include语言扩展来检查是否存在头文件. http://clang.llvm.org/docs/LanguageExtensions.html#include-file-checking-macros

但是,这只会告诉您是否安装了头文件.它无法告诉您"Link Binary With Libraries"是否与其框架相关联.