Swift Package Manager에서 외부 라이브러리를 사용하여 명령줄 도구 개발
Socks를 빌드에 내장하고 Mac의 Xcode에서 개발할 수 있도록 Swift Package Manager을 이용했다.
서버 측 Swift의 웹 앱과 라이브러리 개발도 같은 방법으로 할 수 있을까 예상하고 있다.
준비
Xcode 8 beta 및
swift-DEVELOPMENT-SNAPSHOT-2016-08-18-a
그렇지 않으면 Socks를 빌드 할 수 없으므로 설치하십시오.h tps : // 슈 ft. 오 rg / w w ぉ d / # Ree Ase s
프로젝트 만들기
$ mkdir MyProject
$ cd MyProject/
$ swift package init --type executable
Creating executable package: MyProject
Creating Package.swift
Creating .gitignore
Creating Sources/
Creating Sources/main.swift
Creating Tests/
외부 라이브러리 통합
diff --git a/Package.swift b/Package.swift
index 7f62404..ec40617 100644
--- a/Package.swift
+++ b/Package.swift
@@ -1,5 +1,8 @@
import PackageDescription
let package = Package(
- name: "MyProject"
+ name: "MyProject",
+ dependencies: [
+ .Package(url: "https://github.com/czechboy0/Socks.git", majorVersion: 0, minor: 12)
+ ]
)
$ swift package update
Cloning https://github.com/czechboy0/Socks.git
HEAD is now at 4b14189 Updated Swift 08-04 (#69)
Resolved version: 0.12.0
$ TOOLCHAINS=swift swift build
Compile Swift Module 'SocksCore' (14 sources)
Compile Swift Module 'Socks' (5 sources)
Compile Swift Module 'SocksCoreExampleTCPServer' (1 sources)
Compile Swift Module 'SocksCoreExampleTCPClient' (1 sources)
Compile Swift Module 'SocksExampleUDPServer' (1 sources)
Compile Swift Module 'SocksExampleUDPClient' (1 sources)
Compile Swift Module 'SocksExampleTCPServer' (1 sources)
Compile Swift Module 'SocksExampleTCPClient' (1 sources)
Compile Swift Module 'SocksCoreExampleTCPKeepAliveServer' (1 sources)
Compile Swift Module 'MyProject' (1 sources)
Linking ./.build/debug/SocksCoreExampleTCPClient
Linking ./.build/debug/SocksCoreExampleTCPServer
Linking ./.build/debug/MyProject
Linking ./.build/debug/SocksExampleUDPClient
Linking ./.build/debug/SocksExampleTCPClient
Linking ./.build/debug/SocksExampleTCPServer
Linking ./.build/debug/SocksExampleUDPServer
Linking ./.build/debug/SocksCoreExampleTCPKeepAliveServer
$ swift package generate-xcodeproj
generated: ./MyProject.xcodeproj
이러한 구조의 프로젝트가 생성된다. Package.swift 에 새로운 라이브러리를 추가하면
Dependencies
에 반영하기 위해서 다시 생성한다.명령줄 도구 본문 코드.
main.swift
import Socks
let address = InternetAddress(hostname: "localhost", port: 6379)
do {
let client = try TCPClient(address: address)
// set
try client.send(bytes: "SET key1 hello\n".toBytes())
let status = try client.receiveAll().toString()
print("Received: \(status)")
// get
try client.send(bytes: "GET key1\n".toBytes())
let str = try client.receiveAll().toString()
print("Received: \(str)")
try client.close()
} catch {
print("Error \(error)")
}
이것을 Xcode에서 실행하면
SET/GET 할 수 있는 것을 확인할 수 있었다
Reference
이 문제에 관하여(Swift Package Manager에서 외부 라이브러리를 사용하여 명령줄 도구 개발), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/laiso/items/4b69a6cc46fa92da8b3b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)