不久前,我發現了 Objective-C 的 ObjFW 運行時,它非常簡潔,可以做很多事情 - 而且非常小。但最近這讓我問,哪些運行時可在哪些目標上使用 - 以及如何才能最好地找到答案?我想在我的配置中使用一個小腳本來測試我是否可以在當前平台上使用當前的 clang 或 gcc 安裝使用 ObjFW。
那麼有沒有辦法列出 GCC 或 Clang 上可用的 Objective-C 執行階段呢?
答案1
從 4.0 開始的每個 GCC 版本以及基本上每個 Clang 版本都至少部分支援 ObjFW 運行時。這是因為 ObjFW 運行時使用 GNU ABI,但在此基礎上添加了更多內容。為了使用上面新增的內容,您需要一個接受 -fobjc-runtime=objfw 的 Clang 版本。有關可能的檢查,請參閱 ObjFW 中包含的 configure.ac。
只有當您計劃使用運行時而不使用 ObjFW 的其餘部分時,這一切才有意義 - 如果您也想使用其餘部分,只需使用 objfw-config:它將為 oyu 做正確的事情。
答案2
這不是您問題的完整答案,但是在 clang 文件中列出可用的執行時間:macosx、macosx-fragile、ios、watchos、gcc、gnustep 和 objfw。
在我看來,gnustep、gcc 和 objfw 適合所有目標,其他目標僅適用於 OS X、iOS 和 Watch OS(因為它運行特定於作業系統的運行時,但這只是我的建議)