Target - ehrldyd15/Xcode_Tutorial GitHub Wiki
Target
Xcode์์ Build๋ฅผ ์คํํ์ฌ ์์ฑ๋๋ ์ต์ข ์ ํ(end product)
์ต์ข ์ ํ์ด๋ ์ฑ, ํ๋ ์์ํฌ, Unit Test ๋ฑ์ด๋ค.

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์์ ๋ณผ ์ ์๋ค.

Target > Build Setting, Phases์ ํํ๋ก ์๋ค. ์๋ค๋ค์ด ์ฌ์ค์ instructions์ด๋ค.

script์ญ์ instructions์ ํฌํจ๋๋ค.
Target์ Project build setting์ ์์๋ฐ๋๋ค.

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์ ์ฐ๋๊ฒ ์ผ๋ฐ์ ์ด๋ค (๋ฌด๋ฃ/์ ๋ฃ ๋ฒ์ ์ ๊ตฌ๋ถ๋ ๋น์ทํ ๋งฅ๋ฝ์ด๋ค.)