# 讓 Xcode 15 擁有建置給 macOS 10.9 的能力 > 免責聲明:理論上而言,用這招類推可以建置給早期版本的 iOS。但實際上管不管用我就沒法保證了,因為我不是 iOS 程式師。 本文專門給那些需要在新版本系統當中用新版本 Xcode 將祖產專案建置給早期系統版本的資工業者們。 Xcode 15 需要打 libarclite 才能給早於 macOS 10.13 的系統建置應用程式。 通用做法就是從 Xcode 14.2 或 Xcode 13 當中提取出 libarclite 套裝,然後植入到 Xcode 15 當中。先開啟 toolchains 資料夾: ![Toolchains](https://hackmd.io/_uploads/rkMmwC-P3.png) 再把 libarclite 的東西放進去(也就是 `arc` 這個資料夾): ![libarclite](https://hackmd.io/_uploads/HJl4v0Ww3.png) 然而,如果是 macOS 10.9 的話,事情還要複雜一個層次: macOS 14 Sonoma 開始的 SDK 幾乎把整個 Foundation 當中的很多基礎類型都重寫了。這就導致之前那些被 Swift 從 Objective-C 借走的基礎類型全部都得重新打上「NS」開頭的後綴才可以直接使用。但這還有一個問題:NSLocalizedString 的建構子不能使用了,因為這玩意在 macOS 14 當中也是被(用純 Swift)徹底重構的基礎類型之一。Apple 毫不留情地給這些基礎類型都下了全局的「`@available(macOS 10.10, *)`」的宣告: ![NSLocalizedString](https://hackmd.io/_uploads/H1MrD0bP3.png) ![StringProtocol](https://hackmd.io/_uploads/rkZIPAWv3.png) 這樣一來,除了 libarclite 以外,還需要舊版 macOS SDK 才可以。雖然 macOS 13 Ventura 的 SDK 也可以湊合用,但(保險起見)筆者推薦 macOS 12 Monterey 的 SDK:[Release macOS 12.3 SDK · alexey-lysiuk/macos-sdk (github.com)](https://github.com/alexey-lysiuk/macos-sdk/releases/tag/12.3)。該 SDK 的安置位置: ![macOS 12 SDK](https://hackmd.io/_uploads/ryBvPRWPh.png) 再修改一下 Xcode 專案當中對 macOS SDK 的指定(不用理會 not found): ![Xcode 設定](https://hackmd.io/_uploads/SkqYvCWwn.png) 這樣應該就可以正常組建了。如果有提示說 Date 不符合最新版本要求的話,把 Date 改成 NSDate 即可。 $ EOF.