2021. 11. 11. 22:23ใiOS
1. Swift Package Manager๋ ๋ญ๊น? ์ ํ์ํ๊ฑธ๊น?
Swift Package Manager๋ ์ข ์์ฑ์ ๊ด๋ฆฌํด์ฃผ๋ ์ญํ ์ ํ๋ค. ์ด๋ '๊ด๋ฆฌ'๋ผ ํจ์ Swift ๋น๋ ์์คํ ๊ณผ ํตํฉ๋์ด ์ข ์์ฑ์ ๋ค์ด๋ก๋, ์ปดํ์ผ ๋ฐ ์ฐ๊ฒฐํ๋ ํ๋ก์ธ์ค๋ฅผ ์๋ํํ๋ ๊ฒ์ด๋ค.
2. ํจํค์ง ๋ง๋ค๊ธฐ
+์ฌ๋ด) ์ฒ์์ ๋ค๋ฅธ ๋ธ๋ก๊ทธ๋ค์ ๋ณด๊ณ ํจํค์ง๋ฅผ ๋ง๋ค์๋ค๊ฐ ํฉ๋นํ ์๋ฌ๋ฅผ ์ ํ์๋ค. ๋ค๋ฅธ ์ฌ๋๋ค์ ๊ฐ์ ์๊ฐ ๋ญ๋น๋ฅผ ํ์ง ์๊ธฐ๋ฅผ ๋ฐ๋ผ๋ฉฐ..
๊นํ ๋ ํฌ๋ฅผ ๋ง๋ค๊ณ ํด๋น ๋ ํฌ ํ์ผ์์ ์๋ก์ด ํ๋ก์ ํธ(ํจํค์ง)๋ฅผ ๋ง๋ค๋ฉด ์๋๋ค. ํจํค์ง ๋ ํฌ ๊ฒฐ๊ณผ๋ฌผ๋ค๊ณผ ์์ ์ ๋ ํฌ ํ์ผ ๊ตฌ์ฑ์ ๋น๊ตํด๋ณด๊ณ ๋ค๋ฅด๋ค๋ฉด ๊ณ ์น๋ ๊ฒ์ ์ถ์ฒ
1) ํฐ๋ฏธ๋๋ก ๋ง๋ค๊ธฐ
ํฐ๋ฏธ๋์์ ๋ช ๋ น์ด๋ก ๋ฐ๋ก ํ๋ก์ ํธ ๋ง๋ค๊ณ ๊น์ ์ ๋ก๋ํ๋ ๊ฑด ์ ํ ๊ณต์ ๋ ํฌ๋ฅผ ์ฐธ๊ณ ํ๋ค.
https://github.com/apple/swift-package-manager/blob/main/Documentation/Usage.md#testing
ํด๋น ๊ณต์๋ฌธ์๋ฅผ ๋ณด๋ฉด library๋ฒ์ package๊ฐ ์๊ณ command line์์๋ ์คํํ ์ ์๋ executable๋ฒ์ package ์ค์ ๋ฐฉ๋ฒ์ด ์๋ค. ๋๋ executable๋ฒ์ ์ผ๋ก ํ ์คํธํด๋ณด์๋ค. (github repo์์ ํ์ธ ๊ฐ๋ฅ: https://github.com/n-y-kim/MyExecutable)
<library๋ฒ์ ์ผ๋ก ๋ง๋ค๊ธฐ>
mkdir MyPackage
cd MyPackage
swift package init # or swift package init --type library
swift build
swift test
MyPackage๋ผ๋ ํด๋๋ฅผ ๋ง๋ค๊ณ ,
ํด๋น ํด๋๋ก ์ด๋ํด์ 'swift package init'์ ํด์ฃผ๊ณ , build์ test๊น์ง ํด์ค๋ค๋ฉด(๋๋ executable๋ฒ์ ์ด์๊ธฐ ๋๋ฌธ์ swift run์ด ๋จนํ๊ณ ๊ฒฐ๊ณผ๊ฐ ๋์จ๋ค!)
์ด์ ํ์ํ ํ์ผ๋ค์ ๋ค ๋ง๋ค์์ผ๋ ๋ ํฌ์ ์ฌ๋ ค์ค์ผ ํ๋ค.
๋น ๋ ํ์งํ ๋ฆฌ๋ฅผ ํ๋ ๋ง๋ค๊ณ , ๋ค์ ํฐ๋ฏธ๋๋ก ๋์์จ๋ค.
git init
git add .
git remote add origin [github-URL] #์๋ก ์์ฑํ ๋ ํฌ์ .git url์ ๋ฃ์ด์ค๋ค
git commit -m "Initial Commit"
git tag 1.0.0
git push origin main --tags
์ด๋ ์ฃผ์ํ๋ฉด ์ข์๊ฑด ์ ํ์ ๊ณต์ ๋ ํฌ์์ ์ฌ์ฉํ๋ ๋ธ๋์น๊ฐ ์ฐ๋ฆฌ๊ฐ ํต์์ ์ผ๋ก ์ฌ์ฉํ๋ 'main'์ด ์๋๋ผ 'master'๋ผ์ git init์ ํด์ฃผ๋ฉด ์ด๋ฐ ๋ฌธ๊ตฌ๊ฐ ๋์ฌ ์ ์๋ค.
๊ทธ๋ฌ๋ ๋ง์ง๋ง ์ค์ ๋ณด๋ฉด git branch -m <name>์ผ๋ก ์ด๊ธฐ์ ์ฌ์ฉํ๋ ๋ธ๋์น๋ฅผ ์กฐ์ ํด์ฃผ๋ฉด ๋๋ค๊ณ ํ๋ ์นจ์ฐฉํ๊ฒ git branch -m main์ผ๋ก ๋ฐ๊ฟ์ค๋ค.(๊ฒฐ๊ณผ ํ์ธ์ ์ํด git status๋ก ๋์ ๋ธ๋์น๊ฐ ํ์ฌ ๋ฌด์์ธ์ง ๋ค์ ํ์ธํ ์ ์๋ค)
1.0.0 ๋ฒ์ ์ด๋ผ๋ ํ๊ทธ๋ฅผ ๋ง๋ค์ด์ฃผ๋ ๊ฒ๊น์ง ์๋ฃํ๋ฉด ๋ ํฌ๋ ์ด๋ ๊ฒ ์๊ฒจ์ผ ํ๋ค.(๊ผญ ์ด ํ์์ด์ด์ผ ํ๋ค. ๋ง์ฝ ๋ค๋ฅด๋ค? ์๋ชป ๋ง๋ ๊ฒ.. ํ์ผ ํ์์ ๋ง์ถฐ ์ฃผ๊ฑฐ๋ ์๋ก ๋ง๋ค๊ฑฐ๋..ํฉ์๋ค)
์ด๋ ๊ฒ ํ๋ฉด ํจํค์ง๋ฅผ ์ฑ๊ณต์ ์ผ๋ก ๋ง๋ค์๋ค๊ณ ํ ์ ์๋ค.
2) Xcode๋ก ๋ง๋ค๊ธฐ
ํจํค์ง๋ฅผ ์์ฑํด์ฃผ๊ณ , Github์ ํด๋น ํ๋ก์ ํธ๋ฅผ ๋ ํฌ๋ก ์ ๋ก๋ ํด์ค๋ค.(์ฌ์ ์ Github ๊ณ์ ์ฐ๋ ํ์)
1.0.0 ํ๊ทธ ๋ฌ๊ณ ๋ฆด๋ฆฌ์ฆ
์ด๋ ๊ฒํ๋ฉด ์ฐ๋ฆฌ๋ ํจํค์ง๋ฅผ ๋ง๋ค์๋ค! ์ด์ ํจํค์ง๋ฅผ ์ ์ฉํด๋ณด์
3. ํจํค์ง ์ ์ฉํ๊ธฐ
์ฐ์ ์์ ๋ง๋ XcodeLibrary๋ผ๋ ํจํค์ง์ ๋ด ํจํค์ง์ ์ ํจ์ฑ ํ์ธ์ ์ํด ์ถ๊ฐ ์ฝ๋๋ฅผ ์์ฑํด์ฃผ์๋ค.
์ด์ ๋ด ํจํค์ง๋ฅผ ์ ์ฉํ ์๋ก์ด ํ๋ก์ ํธ๋ก ๋ค์ด๊ฐ์ ํจํค์ง๋ฅผ ์ ์ฉํด๋ณด์.
1. Package Dependencies์์ + ๋ก ์ถ๊ฐํ๊ธฐ
2. ์๊น ๋ง๋ค์ด๋ ๋ ํฌ url๋ก ๊ฒ์ํด์ ํจํค์ง ์ฐพ์์ฃผ๊ธฐ
3. ์ด๋ ๊ฒ ๋ด๋ค๋ฉด ์๋ฃ!
๊ทธ๋ผ ์ด์ ํด๋น ํจํค์ง์ ๋ชจ๋์ด ์ ๋์๊ฐ๋์ง ์ฐ๋ฆฌ์ test() ํจ์๋ก ์คํํด๋ณด์.
import๋ ์ ๋๊ณ ,
์ธ์คํด์ค ์์ฑ๋ ๋ฌธ์ ์๋ค
๋ง์ง๋ง์ผ๋ก test()ํจ์๋ฅผ ํธ์ถํ๊ณ RUNํ๋ Test Completed!๐ ์ถ๋ ฅ ์๋ฃ!!
๋ชจ๋๋ค Swift Package Manager ์๋ฌ ์์ด ์ ๋ง๋ค๊ณ ์ ์ฉํ์๊ธธ ๋ฐ๋๋๋ค๐ค