ν‹°μŠ€ν† λ¦¬ λ·°

μ•ˆλ…•ν•˜μ„Έμš”?

λ„ˆκ΅¬λ¦¬μž…λ‹ˆλ‹€!

 

Xcodeμ—μ„œ 저희가 자주 μ ‘ν•˜κ²Œ λ˜λŠ” 섀정값듀이 μžˆλŠ”λ°

ν•΄λ‹Ή 섀정값에 λŒ€ν•΄ λ‹€μ‹œ κ³΅λΆ€ν•˜κ³  정리해보렀 ν•©λ‹ˆλ‹€.

고럼 레츠고

 

# Projectλž€?

file, resources, ν•˜λ‚˜ μ΄μƒμ˜ μ œν’ˆμ„ λΉŒλ“œν•˜κΈ° μœ„ν•œ 정보λ₯Ό κ°€μ§€λŠ” μ €μž₯μ†Œμž…λ‹ˆλ‹€. ν”„λ‘œμ νŠΈλŠ” μ œν’ˆμ„ λΉŒλ“œν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” λͺ¨λ“  μš”μ†Œμ™€ κ·Έ μš”μ†Œλ“€ κ°„μ˜ 관계λ₯Ό κ΄€λ¦¬ν•©λ‹ˆλ‹€. ν”„λ‘œμ νŠΈμ—λŠ” μ œν’ˆμ„ λΉŒλ“œν•˜λŠ” 방법을 μ§€μ •ν•˜λŠ” ν•˜λ‚˜ μ΄μƒμ˜ νƒ€κ²Ÿ(target)이 ν¬ν•¨λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. λ˜ν•œ, ν”„λ‘œμ νŠΈλŠ” ν”„λ‘œμ νŠΈ λ‚΄ λͺ¨λ“  νƒ€κ²Ÿμ— λŒ€ν•œ κΈ°λ³Έ λΉŒλ“œ 섀정을 μ •μ˜ν•˜λ©°, 각 νƒ€κ²Ÿμ€ ν”„λ‘œμ νŠΈ 섀정을 μž¬μ •μ˜ν•  수 μžˆλŠ” 자체 λΉŒλ“œ 섀정을 μ§€μ •ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.

 

ν”„λ‘œμ νŠΈμ—λŠ” μ•„λž˜μ™€ 같은 정보듀이 ν¬ν•¨λ©λ‹ˆλ‹€.

μ†ŒμŠ€ νŒŒμΌμ— λŒ€ν•œ μ°Έμ‘°

  • μ†ŒμŠ€ μ½”λ“œ(헀더 파일과 κ΅¬ν˜„ 파일 포함)
  • λΌμ΄λΈŒλŸ¬λ¦¬μ™€ ν”„λ ˆμž„μ›Œν¬(λ‚΄λΆ€ 및 μ™ΈλΆ€)
  • λ¦¬μ†ŒμŠ€ 파일
  • 이미지 파일
  • Interface Builder(nib) 파일
  • ꡬ쑰 λ‚΄λΉ„κ²Œμ΄ν„°μ—μ„œ μ†ŒμŠ€ νŒŒμΌμ„ κ΅¬μ„±ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” κ·Έλ£Ή

ν”„λ‘œμ νŠΈ μˆ˜μ€€ λΉŒλ“œ μ„€μ •

  • ν”„λ‘œμ νŠΈμ— λŒ€ν•΄ λ‘˜ μ΄μƒμ˜ λΉŒλ“œ 섀정을 μ§€μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, 디버그(debug)와 릴리즈(release) λΉŒλ“œ 섀정이 각각 μ‘΄μž¬ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

νƒ€κ²Ÿ

  • ν”„λ‘œμ νŠΈμ—μ„œ λΉŒλ“œλ˜λŠ” ν•œ μ œν’ˆμ— λŒ€ν•œ μ°Έμ‘°
  • ν•΄λ‹Ή μ œν’ˆμ„ λΉŒλ“œν•˜λŠ” 데 ν•„μš”ν•œ μ†ŒμŠ€ νŒŒμΌμ— λŒ€ν•œ μ°Έμ‘°
  • ν•΄λ‹Ή μ œν’ˆμ„ λΉŒλ“œν•˜λŠ” 데 μ‚¬μš©λ  수 μžˆλŠ” λΉŒλ“œ μ„€μ •(ν”„λ‘œμ νŠΈ μˆ˜μ€€ λΉŒλ“œ 섀정은 νƒ€κ²Ÿ λΉŒλ“œ μ„€μ •μ—μ„œ μž¬μ •μ˜λ˜μ§€ μ•ŠλŠ” 경우 μ‚¬μš©λ¨), λ‹€λ₯Έ νƒ€κ²Ÿμ— λŒ€ν•œ μ˜μ‘΄μ„± 및 기타 μ„€μ • 포함

μ‹€ν–‰ ν™˜κ²½

  • Xcodeμ—μ„œ λ””λ²„κ·Έν•˜κ±°λ‚˜ ν…ŒμŠ€νŠΈν•  λ•Œ μ‚¬μš©ν•  수 μžˆλŠ” μ‹€ν–‰ ν™˜κ²½μ„ μ§€μ •ν•˜λ©°, μ—¬κΈ°μ—λŠ” λ‹€μŒμ΄ ν¬ν•¨λ©λ‹ˆλ‹€:
    • μ‹€ν–‰ν•˜κ±°λ‚˜ 디버그할 λ•Œ μ‹€ν–‰ν•  μ‹€ν–‰ 파일
    • μ‹€ν–‰ νŒŒμΌμ— 전달할 λͺ…령쀄 인수(μžˆλŠ” 경우)
    • ν”„λ‘œκ·Έλž¨ μ‹€ν–‰ μ‹œ μ„€μ •ν•  ν™˜κ²½ λ³€μˆ˜(μžˆλŠ” 경우)

독립 μ‹€ν–‰ λ˜λŠ” μ›Œν¬μŠ€νŽ˜μ΄μŠ€ 포함

  • ν”„λ‘œμ νŠΈλŠ” λ‹¨λ…μœΌλ‘œ 싀행될 수 있으며, μ›Œν¬μŠ€νŽ˜μ΄μŠ€(workspace)에 포함될 μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.

Xcode Scheme

  • Xcode μŠ€ν‚€λ§ˆλ₯Ό μ‚¬μš©ν•˜μ—¬ νŠΉμ • μ‹œκ°„μ— ν™œμ„±ν™”ν•  target, build configuration, executable configuration을 μ§€μ •ν•©λ‹ˆλ‹€.

# Targetλž€?

Target은 λΉŒλ“œν•  μ œν’ˆμ„ μ •ν•˜κ³ , ν”„λ‘œμ νŠΈ λ˜λŠ” μ›Œν¬μŠ€νŽ˜μ΄μŠ€ λ‚΄μ˜ 파일 μ§‘ν•©μ—μ„œ ν•΄λ‹Ή μ œν’ˆμ„ λΉŒλ“œν•˜κΈ° μœ„ν•œ 지침을 ν¬ν•¨ν•©λ‹ˆλ‹€. νƒ€κ²Ÿμ€ ν•˜λ‚˜μ˜ μ œν’ˆμ„ μ •μ˜ν•˜κ³  ν•΄λ‹Ή μ œν’ˆμ„ λΉŒλ“œν•˜λŠ” 데 ν•„μš”ν•œ μš”μ†Œλ₯Ό λΉŒλ“œ μ‹œμŠ€ν…œμ— μ œκ³΅ν•©λ‹ˆλ‹€. ν”„λ‘œμ νŠΈλŠ” ν•˜λ‚˜ μ΄μƒμ˜ νƒ€κ²Ÿμ„ 포함할 수 있으며, 각 νƒ€κ²Ÿμ€ ν•˜λ‚˜μ˜ μ œν’ˆμ„ μƒμ„±ν•©λ‹ˆλ‹€.

 

μœ„μ—μ„œ λ§ν•œ 'λΉŒλ“œν•˜κΈ° μœ„ν•œ μ§€μΉ¨'은 Build Settingsκ³Ό Build Phases ν˜•νƒœλ‘œ μ œκ³΅λ©λ‹ˆλ‹€. νƒ€κ²Ÿμ€ ν”„λ‘œμ νŠΈμ˜ λΉŒλ“œ 섀정을 μƒμ†λ°›μ§€λ§Œ, νƒ€κ²Ÿ μˆ˜μ€€μ—μ„œ λ³„λ„μ˜ 섀정을 μ§€μ •ν•˜μ—¬ ν”„λ‘œμ νŠΈ 섀정을 μž¬μ •μ˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€. ν•œ λ²ˆμ— ν™œμ„±ν™”λ  수 μžˆλŠ” νƒ€κ²Ÿμ€ ν•˜λ‚˜λΏμ΄λ©°, ν™œμ„± νƒ€κ²Ÿμ€ Xcode μŠ€ν‚€λ§ˆ(scheme)μ—μ„œ μ§€μ •λ©λ‹ˆλ‹€.

 

암묡적 μ˜μ‘΄μ„±(implicit dependancy): μ›Œν¬μŠ€νŽ˜μ΄μŠ€μ— 두 νƒ€κ²Ÿμ΄ μ‘΄μž¬ν•˜κ³  ν•œ νƒ€κ²Ÿμ΄ λ‹€λ₯Έ ν•˜λ‚˜μ˜ νƒ€κ²Ÿμ— μ˜μ‘΄ν•˜κ³  μžˆλ‹€λ©΄ Xcodeμ—μ„œλŠ” 이 의쑴 관계λ₯Ό μžλ™μœΌλ‘œ νƒμ§€ν•˜μ—¬ μ˜¬λ°”λ₯Έ μˆœμ„œλ‘œ λΉŒλ“œν•©λ‹ˆλ‹€.

 

# Build Settingsλž€?

λΉŒλ“œ 섀정은 νŠΉμ • μ œν’ˆμ˜ λΉŒλ“œ ν”„λ‘œμ„ΈμŠ€μ˜ νŠΉμ • 츑면이 μ–΄λ–»κ²Œ μˆ˜ν–‰λ˜μ–΄μ•Ό ν•˜λŠ”μ§€λ₯Ό μ§€μ •ν•˜λŠ” λ³€μˆ˜λ₯Ό μ˜λ―Έν•©λ‹ˆλ‹€.

 

λΉŒλ“œ 섀정은 ν”„λ‘œμ νŠΈ μˆ˜μ€€ λ˜λŠ” νƒ€κ²Ÿ μˆ˜μ€€μ—μ„œ μ§€μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€. ν”„λ‘œμ νŠΈ μˆ˜μ€€ λΉŒλ“œ 섀정은 ν•΄λ‹Ή ν”„λ‘œμ νŠΈμ˜ λͺ¨λ“  νƒ€κ²Ÿμ— μ μš©λ©λ‹ˆλ‹€. ν•˜μ§€λ§Œ νŠΉμ • νƒ€κ²Ÿμ˜ λΉŒλ“œ μ„€μ •μ—μ„œ 이λ₯Ό λͺ…μ‹œμ μœΌλ‘œ μž¬μ •μ˜ν•˜λ©΄ ν•΄λ‹Ή νƒ€κ²Ÿμ—λ§Œ λ³€κ²½λœ 섀정이 μ μš©λ©λ‹ˆλ‹€.

 

각 νƒ€κ²Ÿμ€ ν•˜λ‚˜μ˜ μ œν’ˆμ„ λΉŒλ“œν•˜λŠ” 데 ν•„μš”ν•œ μ†ŒμŠ€ νŒŒμΌμ„ κ΅¬μ„±ν•©λ‹ˆλ‹€. λΉŒλ“œ ꡬ성(Build Configuration)은 νŠΉμ • λ°©μ‹μœΌλ‘œ νƒ€κ²Ÿμ˜ μ œν’ˆμ„ λΉŒλ“œν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” λΉŒλ“œ μ„€μ • 집합을 μ§€μ •ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, 디버그(Debug)와 릴리즈(Release) λΉŒλ“œμ— λŒ€ν•΄ λ³„λ„μ˜ λΉŒλ“œ ꡬ성을 μ‚¬μš©ν•˜λŠ” 것이 μΌλ°˜μ μž…λ‹ˆλ‹€.

μ‚¬μš©μž μ •μ˜ λΉŒλ“œ μ„€μ •

μƒˆ ν”„λ‘œμ νŠΈλ₯Ό 생성할 λ•Œ Xcodeκ°€ μ œκ³΅ν•˜λŠ” κΈ°λ³Έ λΉŒλ“œ μ„€μ • 외에도, μ‚¬μš©μž μ •μ˜ λΉŒλ“œ 섀정을 ν”„λ‘œμ νŠΈ λ˜λŠ” νŠΉμ • νƒ€κ²Ÿμ— λŒ€ν•΄ 생성할 수 μžˆμŠ΅λ‹ˆλ‹€.

쑰건뢀 λΉŒλ“œ μ„€μ •

쑰건뢀 λΉŒλ“œ μ„€μ •(Conditional Build Setting)은 ν•˜λ‚˜ μ΄μƒμ˜ μ „μ œ 쑰건이 μΆ©μ‘±λ˜λŠ”μ§€μ— 따라 μ„€μ • 값이 λ‹¬λΌμ§‘λ‹ˆλ‹€. 이λ₯Ό 톡해 νŠΉμ • 쑰건(예: νƒ€κ²Ÿ μ•„ν‚€ν…μ²˜)에 따라 μ‚¬μš©ν•  SDKλ₯Ό μ§€μ •ν•˜λŠ” 것과 같은 λ™μž‘μ„ κ΅¬ν˜„ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

 

# Schemeλž€?

Xcode μŠ€ν‚€λ§ˆλŠ” λΉŒλ“œν•  νƒ€κ²Ÿ, λΉŒλ“œ μ‹œ μ‚¬μš©ν•  ꡬ성(Configuration), μ‹€ν–‰ν•  ν…ŒμŠ€νŠΈμ˜ λͺ¨μŒμ„ μ •μ˜ν•©λ‹ˆλ‹€. μ›ν•˜λŠ” 만큼의 μŠ€ν‚€λ§ˆλ₯Ό 생성할 수 μžˆμ§€λ§Œ, λ™μ‹œμ— ν™œμ„±ν™”ν•  수 μžˆλŠ” μŠ€ν‚€λ§ˆλŠ” ν•˜λ‚˜λΏμž…λ‹ˆλ‹€.

 

μŠ€ν‚€λ§ˆλŠ” ν”„λ‘œμ νŠΈμ— μ €μž₯ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이 경우, ν•΄λ‹Ή ν”„λ‘œμ νŠΈλ₯Ό ν¬ν•¨ν•˜λŠ” λͺ¨λ“  μ›Œν¬μŠ€νŽ˜μ΄μŠ€μ—μ„œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.μŠ€ν‚€λ§ˆλ₯Ό μ›Œν¬μŠ€νŽ˜μ΄μŠ€μ— μ €μž₯ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€. 이 경우, ν•΄λ‹Ή μ›Œν¬μŠ€νŽ˜μ΄μŠ€μ—μ„œλ§Œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

 

ν™œμ„± μŠ€ν‚€λ§ˆλ₯Ό μ„ νƒν•˜λ©΄, λ™μ‹œμ— μ‹€ν–‰ λŒ€μƒ(Run Destination)도 μ„ νƒν•©λ‹ˆλ‹€. μ‹€ν–‰ λŒ€μƒμ€ μ œν’ˆμ΄ λΉŒλ“œλ  ν•˜λ“œμ›¨μ–΄μ˜ μ•„ν‚€ν…μ²˜λ₯Ό μ˜λ―Έν•©λ‹ˆλ‹€.

 

 

 

'iOS' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

Linker μ•Œμ•„λ³΄κΈ°  (0) 2025.01.12
[Xcode] Xcode Build System μ΄ν•΄ν•˜κΈ°  (0) 2025.01.03
[Xcode] build configuration file(xcconfig) μ•Œμ•„λ³΄κΈ°  (0) 2025.01.01
[iOS] Keychain  (1) 2024.11.04
[iOS] UserDefaults  (0) 2024.11.03
λŒ“κΈ€
곡지사항
μ΅œκ·Όμ— 올라온 κΈ€
μ΅œκ·Όμ— 달린 λŒ“κΈ€
Total
Today
Yesterday
링크
Β«   2026/03   Β»
일 μ›” ν™” 수 λͺ© 금 ν† 
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
κΈ€ 보관함