방금 Xcode에서 새로운 Swift 프로젝트를 만들었습니다. 사용중인 Swift의 버전이 궁금합니다.
Xcode 또는 터미널에서 프로젝트 내에서 사용중인 Swift 버전을 어떻게 확인할 수 있습니까?
방금 Xcode에서 새로운 Swift 프로젝트를 만들었습니다. 사용중인 Swift의 버전이 궁금합니다.
Xcode 또는 터미널에서 프로젝트 내에서 사용중인 Swift 버전을 어떻게 확인할 수 있습니까?
답변:
프로젝트 빌드 설정에는 Swift Language Version에 대한 정보를 키-값 형식으로 저장하는 'Swift Compiler-Languages'블록이 있습니다. Xcode 및 활성 버전에 사용할 수있는 (지원되는) Swift 언어 버전도 체크 표시로 표시합니다.
프로젝트 ► (프로젝트 대상 선택) ► 빌드 설정 ► (검색 막대에 'swift_version'을 입력하십시오.) Swift Compiler Language ► Swift Language Version ► 언어 목록을 클릭하여 엽니 다 (그리고 목록 중 하나에 체크 표시가 나타납니다) -항목, 현재 빠른 버전이 될 것입니다).
이해하기 쉽게이 스냅 샷을보십시오.
프로그래밍 방식으로 다음 코드를 사용하면 프로젝트에서 지원하는 Swift 버전을 찾을 수 있습니다.
#if swift(>=5.2)
print("Hello, Swift 5.2")
#elseif swift(>=5.1)
print("Hello, Swift 5.1")
#elseif swift(>=5.0)
print("Hello, Swift 5.0")
#elseif swift(>=4.2)
print("Hello, Swift 4.2")
#elseif swift(>=4.1)
print("Hello, Swift 4.1")
#elseif swift(>=4.0)
print("Hello, Swift 4.0")
#elseif swift(>=3.2)
print("Hello, Swift 3.2")
#elseif swift(>=3.0)
print("Hello, Swift 3.0")
#elseif swift(>=2.2)
print("Hello, Swift 2.2")
#elseif swift(>=2.1)
print("Hello, Swift 2.1")
#elseif swift(>=2.0)
print("Hello, Swift 2.0")
#elseif swift(>=1.2)
print("Hello, Swift 1.2")
#elseif swift(>=1.1)
print("Hello, Swift 1.1")
#elseif swift(>=1.0)
print("Hello, Swift 1.0")
#endif
다음은 Playground를 사용한 결과입니다 ( Xcode 11.x 사용 ).
내가하는 일은 터미널에서 말합니다 :
$ xcrun swift -version
Xcode 6.3.2의 출력은 다음과 같습니다.
Apple Swift version 1.2 (swiftlang-602.0.53.1 clang-602.0.53)
물론 그것은 xcrun
Xcode 사본을 올바르게 가리키고 있다고 가정 합니다. 나처럼 Xcode의 여러 버전을 저글링하는 경우 걱정할 수 있습니다! 그것이 맞는지 확인하려면
$ xcrun --find swift
Xcode의 경로를 살펴보십시오. 예를 들면 다음과 같습니다.
/Applications/Xcode.app/...
그것이 당신의 Xcode라면, 출력 -version
은 정확합니다. 을 다시 지정해야하는 경우 xcrun
Xcode의 위치 환경 설정 패널에있는 명령 행 도구 팝업 메뉴를 사용하십시오.
xcode-select -p
xcrun가 사용하고있는 엑스 코드의 경로를 인쇄 할 sudo xcode-select -s /path/to/Xcode.app
을 변경할 수 있습니다.
Xcode 8.3부터는 대상이 사용하는 신속한 버전의 가치 Build Settings
가있는 열쇠 Swift Language Version
가 있습니다.
구형 Xcode의 경우이 솔루션을 사용하려면 터미널을 열고 다음 명령을 입력하십시오.
사례 1 : Xcode 앱을 하나만 설치했습니다
swift -version
사례 2 : 여러 Xcode 앱을 설치했습니다
스위치 active developer directory
( 빠른 버전을 확인하려는 응용 프로그램 디렉토리 Xcode_7.3.app
의 Xcode 앱 파일 이름으로 다음 명령을 대체하십시오 )
sudo xcode-select --switch /Applications/Xcode_7.3.app/Contents/Developer
그때
swift -version
참고 : Xcode 8에서 swift 3.x를 기본 swift 버전으로 사용하더라도 Xcode 8에서 Xcode 8.2.x까지 swift 2.3을 사용할 수 있습니다. 신속한 2.3을 사용하려면 from 플래그 Use Legacy Swift Language Version
를 켜면 XCode가 해당 프로젝트 대상에 Swift 2.3을 사용합니다.YES
Build Setting
Xcode가 사용하는 Swift 버전을보고 선택할 수 있습니다.
대상 -> 빌드 설정 -> Swift Language Version :
Xcode 8.3 및 Xcode 9에서 사용할 수 있습니다 (이전 버전은 확인하지 않았습니다)
Swift Language Version
내 Xcode 8.2.1 프로젝트에서 설정으로 나타나지 않습니다. 있습니다 Use Legacy Swift Language Version
.
Swift Language Version
존재하지 않았습니다 Build Settings
... Xcode 8.x 이전 버전 Use Legacy Swift Language Version
에서는 No
= Swift 3, Yes
= Swift 2.3
이 레딧 게시물이 도움이되었습니다 : https://www.reddit.com/r/swift/comments/4o8atc/xcode_8_which_swift/d4anpet
Xcode 8은 Swift 3.0을 기본값으로 사용합니다. 그러나 Swift 2.3을 켤 수 있습니다. 프로젝트의 빌드 설정으로 이동하여 '레거시 스위프트 언어 버전 사용'을 예로 설정하십시오.
좋은 오래된 레딧 :)
시스템에 설치된 기본 버전의 swift를 보려면 명령 행에서 다음을 입력하십시오.
swift --version
Apple Swift 버전 4.1.2 (swiftlang-902.0.54 clang-902.0.39.2)
대상 : x86_64-apple-darwin17.6.0
이것은 설치 한 Xcode의 앱 스토어 버전에 포함 된 버전 일 가능성이 높습니다 (변경하지 않은 경우).
Xcode의 특정 버전 (예 : 베타)에서 사용중인 Swift의 실제 버전을 확인하려면 명령 행에서 Xcode 번들 내에서 빠른 바이너리를 호출하고 매개 변수 --version을 전달하십시오.
/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift --version
Apple Swift 버전 4.2 (swiftlang-1000.0.16.7 clang-1000.10.25.3)
대상 : x86_64-apple-darwin17.6.0
/usr/bin/swiftc --version
보너스 기여 : Jazzy 문서와 함께 사용할 깨끗한 문자열을 추출하기 위해 사용자 정의 node.js 스크립트를 사용하고 있습니다. 개발 프로세스에서 작업 할 수있는 장소를 찾을 수 있다면 이것을 사용할 수 있습니다.
Bash 스크립트에서 호출되었습니다.
#!/bin/bash
swiftversion=$(node SwiftVerSlicer.js "${xcrun swift -version}");
echo $swiftversion
SwiftVerSlicer.js :
// begin script
const inputString = `${process.argv[2]}`
let searchTerm = (inputString.indexOf('(') - 1)//-1 cause whitespace
let version = inputString.slice(0,searchTerm)
console.log(version)
// end script
물론 정규 표현식을 사용할 수도 있지만 원하는대로 수행하십시오.]