๐Ÿ’กย Understanding Xcode Build System ๊ธ€์„ ์ฝ๊ณ  ๋ฒˆ์—ญ ๋ฐ ์ •๋ฆฌํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค.

๋ชจ๋“  ์Šค์œ„ํ”„ํŠธ ํ”„๋กœ๊ทธ๋žจ์€ ์‹ค์ œ๋กœ ๊ธฐ๊ธฐ์—์„œ ์‹คํ–‰๋˜๊ธฐ ์ „์— ๋งŽ์€ ๋ณ€ํ™˜์„ ๊ฑฐ์นœ๋‹ค. ์ด ๊ณผ์ •์€ ๋ณดํ†ต Xcode Build System์— ์˜ํ•ด ์ฒ˜๋ฆฌ๋œ๋‹ค. ์ด ๊ธ€์—์„œ ์šฐ๋ฆฌ๋Š” Xcode ๋นŒ๋“œ ์‹œ์Šคํ…œ์˜ ๊ฐ ๋ถ€๋ถ„์„ ์‚ดํŽด๋ณผ ๊ฒƒ์ด๋‹ค.

Problem Statement - ํ•˜๋“œ์›จ์–ด๋Š” Swift ์ฝ”๋“œ๋ฅผ ์–ด๋–ป๊ฒŒ ์ดํ•ดํ•˜๋Š”๊ฑธ๊นŒ?

๋ชจ๋“  ์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ์€ ์†Œํ”„ํŠธ์›จ์–ด์™€ ํ•˜๋“œ์›จ์–ด์˜ ๋‘ ๋ถ€๋ถ„์œผ๋กœ ๋‚˜๋‰œ๋‹ค.

ํ•˜๋“œ์›จ์–ด๋Š” ํ‚ค๋ณด๋“œ, ๋ชจ๋‹ˆํ„ฐ์™€ ๊ฐ™์€ ์ปดํ“จํ„ฐ์˜ ๋ฌผ๋ฆฌ์ ์ธ ๋ถ€๋ถ„์ด๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ํ•˜๋“œ์›จ์–ด๋Š” ์ž์‹ ์—๊ฒŒ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ• ์ง€์— ๋Œ€ํ•œ ์ง€์‹œ๋ฅผ ๋‚ด๋ฆฌ๋Š” ์†Œํ”„ํŠธ์›จ์–ด์— ์˜ํ•ด ์ œ์–ด๋œ๋‹ค. ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ํ”„๋กœ์„ธ์Šค๋ฅผ ์กฐ์œจํ•˜๊ณ , ํ•˜๋“œ์›จ์–ด๋Š” ์‹ค์ œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์—ญํ• ์„ ๋งก๊ธฐ ๋•Œ๋ฌธ์— ์ด ๋‘˜์€ ๊ฐ๊ฐ ๋‹จ๋…์œผ๋กœ ์‚ฌ์šฉ๋  ์ˆ˜ ์—†๋‹ค.

์†Œํ”„ํŠธ์›จ์–ด ์—”์ง€๋‹ˆ์–ด๋กœ์„œ, ์šฐ๋ฆฌ์˜ ์ฃผ์š” ์ดˆ์ ์€ ์†Œํ”„ํŠธ์›จ์–ด ๋ถ€๋ถ„์ด๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ•˜๋“œ์›จ์–ด๋Š” Logic 0๊ณผ Logic 1 2๊ฐ€์ง€์˜ ๋ ˆ๋ฒจ์„ ๊ฐ–๋Š” ์ „๊ธฐ ์‹ ํ˜ธ๋งŒ ๋ฐ›๊ธฐ ๋•Œ๋ฌธ์— Swift๋กœ ์ž‘์„ฑ๋œ ์ฝ”๋“œ๋ฅผ ๋ฐ”๋กœ ์ดํ•ดํ•  ์ˆ˜ ์—†๋‹ค.

์ด์ œ ์ด๋Ÿฐ ๊ถ๊ธˆ์ฆ์ด ์ƒ๊ธฐ๊ฒŒ ๋œ๋‹ค โ‡’ ๐Ÿ’ก โ€œSwift ์ฝ”๋“œ๋Š” ํ•˜๋“œ์›จ์–ด๊ฐ€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ํ˜•ํƒœ๋กœ ์–ด๋–ป๊ฒŒ ๋ณ€ํ™˜๋˜๋Š”๊ฑฐ์ง€?โ€

๐Ÿ‘‰ย ๊ทธ์— ๋Œ€ํ•œ ํ•ด๋‹ต์€ **Language processing system (์–ธ์–ด ์ฒ˜๋ฆฌ ์‹œ์Šคํ…œ)**์— ์žˆ๋‹ค.


Language Processing System (์–ธ์–ด ์ฒ˜๋ฆฌ ์‹œ์Šคํ…œ)

์–ธ์–ด ์ฒ˜๋ฆฌ ์‹œ์Šคํ…œ์€ ์ž„์˜์˜ source ์–ธ์–ด๋กœ ์ž‘์„ฑ๋œ ์ผ๋ จ์˜ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ํ”„๋กœ๊ทธ๋žจ์„ ์ƒ์„ฑํ•ด์ฃผ๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ๋ชจ์Œ์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์–ธ์–ด ์ฒ˜๋ฆฌ ์‹œ์Šคํ…œ์€ ํ”„๋กœ๊ทธ๋ž˜๋จธ๋“ค์ด low level์˜ ๊ธฐ๊ณ„์–ด๋ฅผ ์ž‘์„ฑํ•ด๋Š” ๋Œ€์‹ , Swift๊ฐ™์€ higher-level์˜ ๊ณ ๊ธ‰ ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค.

์šฐ๋ฆฌ๊ฐ€ iOS, macOS ๋“ฑ์˜ ๊ฐœ๋ฐœ์—์„œ ๋งค์ผ ์‚ฌ์šฉํ•˜๋Š” ์–ธ์–ด ์ฒ˜๋ฆฌ ์‹œ์Šคํ…œ์€ Xcode Build System์ด๋ผ๊ณ  ๋ถˆ๋ฆฐ๋‹ค.


Xcode Build System