簡體   English   中英

未強制使用 Xcode 中的 Swift 構建設置以使用較低的 4.0.3 版本而不是 5.0.1

[英]Swift build settings in Xcode to use lower 4.0.3 version instead of 5.0.1 are not enforced

我正在Xcode 10.3創建一個簡單的 Swift 框架並嘗試使用較低的Swift 4.0.3版本。 我轉到 Xcode 構建設置並從 5.0.1 切換到 4.0.3,然后構建項目。

在此處輸入圖片說明

我針對結果框架運行otool以確保它使用正確的 Swift 版本構建,但包含的庫仍然來自 Swift 5.0.1(對應於下面輸出中的 1001.0.82):

otool -l SwiftyHello.framework/SwiftyHello

cmd LC_LOAD_DYLIB
cmdsize 56
name @rpath/libswiftCore.dylib (offset 24)
time stamp 2 Wed Dec 31 16:00:02 1969
current version **1001.0.82**
compatibility version 1.0.0

我的工具鏈正在運行 Swift 5.0.1:

快速版本

Apple Swift version 5.0.1 (swiftlang-1001.0.82.4 clang-1001.0.46.5)
Target: x86_64-apple-darwin18.7.0

如何確保 Swift 框架是使用 Swift 4.0.3 構建的?

SWIFT_VERSION (Swift 語言版本)鍵對生成的二進制文件的實際 Swift 版本沒有任何作用。 $ swift --help

-swift-version 根據特定的 Swift 語言版本號解釋輸入

因此,基本上,Xcode 使用-swift-version 4參數執行 Swift 編譯器。 它改變了 Swift 編譯器解析源文件的方式,但不會以任何方式影響二進制文件。

要構建實際的 Swift 4 二進制文件,您必須安裝 Swift 4工具鏈 然后您就可以從菜單Xcode -> Toolchains選擇正確的工具Xcode -> Toolchains 但是,老實說,我不建議這樣做,因為 Apple 並不關心舊版本的工具鏈,而且 Xcode 通常在使用它們時表現得不穩定。

相反,我建議您從Apple 下載網站安裝較舊的 Xcode(在您的情況下為 9.3)並從那里構建項目。

或者,您可以在Github ActionsCircleCITravisCI 中設置相對簡單的 CI/CD,並在那里同時構建多個 Xcode 版本。 並在本地使用最新的 Xcode。 因為這些 CI 為您提供了多個具有不同 Xcode 和 macOS 版本的虛擬環境。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM