不久前,我发现了 Objective-C 的 ObjFW 运行时,它非常简洁,可以做很多事情 - 而且非常小巧。但最近它让我不禁想问,哪些运行时适用于哪些目标 - 以及如何才能最好地找到它?我想在我的配置中使用一个小脚本来测试我是否可以在当前平台上使用 ObjFW,以及当前的 clang 或 gcc 安装。
那么有没有办法列出 GCC 或 Clang 上可用的 Objective-C 运行时?
答案1
从 4.0 开始的每个 GCC 版本以及基本上每个 Clang 版本都至少部分支持 ObjFW 运行时。这是因为 ObjFW 运行时使用 GNU ABI,但在此基础上添加了更多内容。为了使用在此基础上添加的内容,您需要一个接受 -fobjc-runtime=objfw 的 Clang 版本。有关可能的检查,请参阅 ObjFW 中包含的 configure.ac。
这一切仅在您计划使用运行时而不使用 ObjFW 的其余部分时才有意义 - 如果您还想使用其余部分,只需使用 objfw-config:它会为您做正确的事情。
答案2
这不是你问题的完整答案,但是在 clang 文档中列出了可用的运行时:macosx、macosx-fragile、ios、watchos、gcc、gnustep 和 objfw。
在我看来,gnustep、gcc 和 objfw 适用于所有目标,其他仅适用于 OS X、iOS 和 Watch OS(因为这个运行时特定于操作系统,但这只是我的建议)