Target - ehrldyd15/Xcode_Tutorial GitHub Wiki

Target

Xcode์—์„œ Build๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์ƒ์„ฑ๋˜๋Š” ์ตœ์ข… ์ œํ’ˆ(end product)

์ตœ์ข… ์ œํ’ˆ์ด๋ž€ ์•ฑ, ํ”„๋ ˆ์ž„์›Œํฌ, Unit Test ๋“ฑ์ด๋‹ค.

Target

Target์— ๋ณด๋ฉด ์ตœ์ข…์ œํ’ˆ๋“ค์ด ์•ฑ์œผ๋กœ ์žˆ๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

Framework

ํ”„๋ ˆ์ž„์›Œํฌ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

Target์€ ๋˜ ํ•˜๋‚˜์˜ ํŠน์ง•์ด ์žˆ๋Š”๋ฐ

ํ”„๋กœ์ ํŠธ์—๋Š” ํ•˜๋‚˜ ์ด์ƒ์˜ Target์ด ํฌํ•จ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ฐ Target์€ ํ•˜๋‚˜์˜ ์ œํ’ˆ์„ ์ƒ์„ฑํ•œ๋‹ค.

Target

์œ„์˜ ์ด๋ฏธ์ง€์—์„œ ํ•˜๋‚˜์˜ ํ”„๋กœ์ ํŠธ ์•ˆ์— ์—ฌ๋Ÿฌ๊ฐœ์˜ ํƒ€๊ฒŸ์ด ์žˆ๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

1. Target์ด๋ž€?

"A target specifies a product to build and contains the instructions for building the product from a set of files in a project or workspace."

(Target์€ ๋นŒ๋“œ ํ•  ์ œํ’ˆ์„ ์ง€์ •ํ•˜๋ฉฐ, Project ๋˜๋Š” workspace์•ˆ์— ์žˆ๋Š” ํŒŒ์ผ set์—์„œ, product๋ฅผ buildํ•˜๊ธฐ ์œ„ํ•œ instructions์„ ํฌํ•จํ•œ๋‹ค.)

product building instructions์€ Xcode Project Editor์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

Instruction

Target > Build Setting, Phases์˜ ํ˜•ํƒœ๋กœ ์žˆ๋‹ค. ์–˜๋„ค๋“ค์ด ์‚ฌ์‹ค์€ instructions์ด๋‹ค.

Script

script์—ญ์‹œ instructions์— ํฌํ•จ๋œ๋‹ค.

Target์€ Project build setting์„ ์ƒ์†๋ฐ›๋Š”๋‹ค.

BuildSetting

Target์—๋„ Build Setting์ด ์žˆ์ง€๋งŒ Project์—๋„ Build Setting์ด ์žˆ๋‹ค.

๊ณ ๋กœ Target์€ ๊ธฐ๋ณธ์ ์œผ๋กœ Project Build Setting์„ ์ƒ์†๋ฐ›๋Š”๋‹ค.

ํ•˜์ง€๋งŒ Target level์—์„œ ๋‹ค๋ฅธ ์„ค์ •์„ ์ง€์ •ํ•จ์œผ๋กœ์จ Project Setting์„ Overrideํ•  ์ˆ˜ ์žˆ๋‹ค.

ํ•œ๋ฒˆ์— ํ•˜๋‚˜์˜ active Target๋งŒ ์žˆ์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ, Xcode Scheme์€ active target์„ ์ง€์ •ํ•œ๋‹ค.

2. ์˜์กด์„ฑ์— ๋Œ€ํ•˜์—ฌ

Target์ด ์ƒ์„ฑํ•˜๋Š” ์ œํ’ˆ์ด, ๋˜ ๋‹ค๋ฅธ Target๊ณผ ๊ด€๋ จ๋  ์ˆ˜ ์žˆ๋‹ค.

Target(A)์ด buildํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋‹ค๋ฅธ Target(B)์˜ output์„ ํ•„์š”๋กœ ํ•˜๋Š” ๊ฒฝ์šฐ์—,

A Target์€ B Target์— ์˜์กดํ•œ๋‹ค๊ณ  ํ•œ๋‹ค.

Xcode๋Š” ์ด๋Ÿฐ ๋‘ Target์ด ๊ฐ™์€ workspace์•ˆ์— ์žˆ๋Š” ๊ฒฝ์šฐ,

Xcode๊ฐ€ ์•Œ์•„์„œ ์ด๋Ÿฌํ•œ dependency(์ข…์†์„ฑ)์„ ๋ฐœ๊ฒฌํ•œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ, Xcode๋Š” ์•Œ์•„์„œ ํ•„์š”ํ•œ ์ˆœ์„œ๋Œ€๋กœ product๋ฅผ buildํ•œ๋‹ค.

์ด๋Ÿฌํ•œ ๊ด€๊ณ„๋ฅผ implicit dependency(์•”๋ฌต์ ์ธ ์ข…์†์„ฑ)๋ผ๊ณ  ํ•œ๋‹ค.

build Setting์—์„œ ๋ช…์‹œ์ ์œผ๋กœ(explicit. ์œ„์—์„œ ๋‚˜์˜จ implicit์™€ ๋ฐ˜๋Œ€) Target ์ข…์†์„ฑ๋“ค์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ,

Xcode๊ฐ€ implicit dependency์„ ๊ฐ€์งˆ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ ํ•  ์ˆ˜ ์žˆ๋Š” ๋‘๊ฐœ์˜ Target์ด ์‹ค์ œ๋กœ๋Š” ์ข…์†๋˜์ง€ ์•Š์•˜์Œ์„ ์ง€์ •ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ๊ฐ™์€ workspace์•ˆ์—์„œ ํ•ด๋‹น ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋Œ€ํ•ด ๋งํฌ๋˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ์•ฑ์„ ๋‘˜ ๋‹ค ๋นŒ๋“œ ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ

Xcode๋Š” ์ด ๊ด€๊ณ„๋ฅผ ๋ฐœ๊ฒฌํ•˜๊ณ , ์ž๋™์œผ๋กœ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋จผ์ € ๋นŒ๋“œํ•œ๋‹ค.

ํ•˜์ง€๋งŒ ์‹ค์ œ๋กœ workspace์— ๋‚ด์žฅ๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฒ„์ „์ด ์•„๋‹Œ, ๋‹ค๋ฅธ ๋ฒ„์ „์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ๋งํฌ๋˜๊ธธ ์›ํ•œ๋‹ค๋ฉด,

์ด implicit dependency์„ ๋Œ€์ฒดํ•˜๋Š” explicit dependency๋ฅผ build setting์—์„œ ๋งŒ๋“ค๋ฉด ๋œ๋‹ค.

๊ธฐํƒ€

Target๊ณผ Configuration์€ ๋ชฉ์ ์ด ๋‹ค๋ฅด๋‹ค.

Configuration์€ ํ•˜๋‚˜์˜ Target์— ๋Œ€ํ•˜์—ฌ ๋‹ค๋ฅธ ๋ฒ„์ „์˜ ์•ฑ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. (dev, inhouse, produntion)

Target์€ ๋‹ค๋ฅธUI๋กœ ํ•ด์™ธ์•ฑ์„ ๋‚ด๊ณ ์‹ถ๋‹ค ํ• ๋•Œ Target์„ ์“ฐ๋Š”๊ฒŒ ์ผ๋ฐ˜์ ์ด๋‹ค (๋ฌด๋ฃŒ/์œ ๋ฃŒ ๋ฒ„์ „์˜ ๊ตฌ๋ถ„๋„ ๋น„์Šทํ•œ ๋งฅ๋ฝ์ด๋‹ค.)

์ž๋ฃŒ์ถœ์ฒ˜

https://zeddios.tistory.com/706?category=682196