Understanding Xcode Projects

OSXDEV

Jump to: navigation, 찾기

Xcode는 어플리케이션을 빠르고 쉽게 개발할 수 있는 강력한 프로페셔널 툴입니다. 하지만 한가지 종류의 어플리케이션을 개발하는데 유용한 것만은 아닙니다. Xcode는 당신이 생각할 수 있는 어떠한 종류의 소프트웨어라도 개발할 수 있습니다. 코코아와 카본 어플리케이션으로 부터 커널 익스텐션과 스팟라잇 임포터까지 개발 환경을 지원합니다. Xcode의 고유한 인터페이스는 소스 코드를 살펴보기에 편리한 기능을 제공하며 Xcode에 포함된 다양한 툴(GCC, javac, jikes, GDB)에서 제공하는 유용한 기능들을 사용할 수 있습니다. 이러한 것들은 프로들을 위한, 프로들이 만든 툴입니다.

이러한 특징때문에 Xcode는 이미 다앙한 매킨토시 개발자 커뮤니티에서 사용되고 있습니다. 그리고 애플의 Intel 기반 매킨토시로의 이주가 이미 완료되었고, 핵심적인 부분중에 하나인 Xcode도 마찬가지 입니다. Xcode를 사용하면 universal binary를 생성할 수 있으며, 하나의 패키지로 PowerPC와 Intel 아키텍쳐 모두에서 네이티브하게 실행할 수 있는 파일 포맷을 생성할 수 있습니다. 실제로 Xcode로 업그레이드하지 않은 개발자들은 universal binary를 생성하기 위한 첫번째 단계로 업그레이드가 필요합니다.

Xcode에 익숙해지기 위해서는, universal binary를 작성해 보고, Xcode의 유저 인터페이스을 이해하고 소프트웨어 프로젝트를 어떻게 사용할 것인지가 필요합니다. 이것은 Xcode의 철학을 이해하기 위한 방법중 한 단계이며, 이러한 단계가 당신을 업그레이드 시킬 것입니다.


목차

[편집] Xcode 프로젝트 정의

어플리케이션을 빌드하거난 디버깅하기 위해 생성된 Xcode에 파일들은 프로젝트에 초점이 맞춰져 있습니다. Xcode 프로젝트는 소프트웨어를 빌드하기 위한 모든 파일과 리소스를 구성하거나 억세스 할 수 있습니다. 어떠한 것을 빌드하는지는 고려하지 않고 Xcode는 다음 세가지의 정보만을 관리합니다.

  • Source file reference는 소스코드를 포합합니다. 이미지, 로컬라이즈된 스트링, 데이터 모델 등등..
  • Target은 빌드할 프로덕트를 정의합니다. target은 파일과 빌드시 사용되는 작업 필요한 명령어를 구성합니다.
  • Executable environment는 소프트웨어 프로덕트를 실행하고 테스트합니다. Executable environment (실행 환경)은 프로덕트가 사용될 프로그램을 정의합니다. 많은 경우 이것은 프로덕트 그 자체이지만 그렇치 않을 수도 있습니다. 추가적으로, 실행환경은 모든 커맨드 라인 아규먼트와 사용될 환경 변수를 정의합니다.

Xcode 프로젝트의 이러한 세가지 요소는 그림 1에 표시되어 있습니다.

 그림 1 : Xcode가 Source file reference와 Target, Executable environment를 사용하는 과정

그림 1 : Xcode가 Source file reference와 Target, Executable environment를 사용하는 과정

Build and Run (Command-R)명령어를 실행할 때, Xcode는 프로덕트를 생성하기위한 소스코드의 작업들이 설정된 target을 실행하며, 그 이후 설정된 실행 환경을 실행합니다.

"하지만, 잠깐" 하고 질문이 있으실 겁니다. "실행환경을 왜 설정해야 합니까? 프로덕트를 그냥 실행해서는 안되나요?" 좋은 질문입니다. 만약 빌드된 코코아 어플리케이션을 실행할 경우 드물지만 문제를 일으킬 수도 있습니다. 하지만 플러그인과 같이 별도의 실행 어플리케이션이 필요한 경우도 많이 있습니다. 실행 환경은 디버거에서 프로덕트를 실행할 때 사용됩니다. 같은 제품을 다른 방법으로 실행할 수 있느 다중 실행 환경을 정의할 수도 있습니다.


[편집] Project 그룹과 파일 목록

source file reference, targets, executable environment는 Xcode 유저 인터페이스에서 프로젝트안에 그룹과 파일 리스트로 구성되어 표시됩니다. 그림 2를 통해 그룹과 파일 리스트에서 포함된 각각의 컴포넌트를 살펴봅시다. 그림 2는 DotView라는 예제 어플리케이션입니다.

다음의 로컬 경로에서 찾아 볼 수 있습니다. (Xcdoe 설치 필요)
/Developer/Examples/AppKit/DotView/DotView.xcodeproj

 그림 2 : compact interface로 다양한 종류의 정보가 그룹과 파일 리스트로 구성

그림 2 : compact interface로 다양한 종류의 정보가 그룹과 파일 리스트로 구성

프로젝트의 source file reference을 살펴보면 많은 정보가 들어 있으며, Product의 각각을 펼쳐보면 그림 3과 같은 모습을 볼 수 있습니다.

 그림 3 : 빌드된 프로덕트의 컴포넌트의 모습. (이 경우는 코코아 어플리케이션)

그림 3 : 빌드된 프로덕트의 컴포넌트의 모습. (이 경우는 코코아 어플리케이션)

Taget을 펼치면 프로덕트를 빌드하는데 필요한 컨텐츠 전체를 보실 수 있습니다. 그림 4를 참고하시기 바랍니다.

 그림 4 : target을 펼친 후 표시되는 내용

그림 4 : target을 펼친 후 표시되는 내용


[편집] 프로젝트 네비게이션

소스코드 파일, projects, targets, executable environment들은 프로젝트 컨텐츠로 그룹과 파일 리스트를 통해 확인할 수 있습니다. 또한 파인더나 iTunes의 스마트 폴더와 같은 방법으로 Smart Group을 이용해 필요한 정보를 모아서 볼 수 있습니다.

 그림 5 : Xcode 그룹과 파일 리스트는 프로젝트를 네이게이션 할 수 있는 다양한 방법을 제공.

그림 5 : Xcode 그룹과 파일 리스트는 프로젝트를 네이게이션 할 수 있는 다양한 방법을 제공.

Xcode를 새로 접하게 되는 사용자들은 다른 환경에서 사용해던 그룹과 파일 리스트 형태를 Xcode에서 기능을 찾고자 하는 경우가 있습니다. 하지만 Xcode에 한번 친숙해지면 프로젝트 패널이 강력하며, Xcdoe가 제공하는 여러 유용한 기능에 놀랄 것입니다.


[편집] Source File References In Depth

Source File References에 따라서 Xcode 프로젝트의 기본적인 컴포넌트를 살펴봅시다. 소프 파일 레퍼런스를 두번 클릭하면 소스 파일이 열리면서 편집할 수 있는 상태가 됩니다. 하지만 위에서 살펴봤던 것처럼 소스 파일 레퍼런스는 target에 추가된 명령들도 포함할 수 있습니다. 예를 들어 Object-C 소스 코드 파일(.m 확장자를 가진)을 프로젝트에 추가하고 targer과 연결하면 target의 Compile Sources 스텝에 추가되고 GCC에 의해 진행됩니다.

그림 6과 같이 Xcode 프로젝트 인터페이스를 이용해 target의 일부분인 source file reference를 컨트롤할 수 있습니다.

 그림 6 : target에 추가된 Source File Reference를 빠르게 설정할 수 있는 Xcode 인터페이스

그림 6 : target에 추가된 Source File Reference를 빠르게 설정할 수 있는 Xcode 인터페이스

또한 Get Info 윈도우를 열어 source file reference에 대한 설정을 변경할 수 있으며, Info 윈도우는 File > Get Info 메뉴나 Command-I를 눌러 그림 7과 같이 열 수 있습니다.

 그림 7 : source file reference의 target을 위한 추가 빌드 세팅

그림 7 : source file reference의 target을 위한 추가 빌드 세팅

Object-C 소스 파일의 경우 GCC에 의해 컴파일되는 활성된 target 결과를 포함하며, 최종 실행 파일에 링크됩니다. 만약 최종 결과물에 포함하지 않으려면 빌드된 프로덕트에서 간단히 제거하면 됩니다.


[편집] Target은 어떻게 작동되는가?

자, 이제는 target이 어떻게 작동되는 지 알아봅시다. 그룹 & 파일 리스트에 target 부분을 살펴보면, 프로덕트가 빌드될 때 어떠한 결과물이 생성되는 지 알 수 있습니다. 그림 8에 DotView 프로덕트가 빌드되는 과정이 상세하게 설명되어 있습니다.

 그림 8 : target에 포함된 최종 결과물에 대한 작업들

그림 8 : target에 포함된 최종 결과물에 대한 작업들

그림 9와 같이 Build 결과 윈도우에서 target이 빌드되는 과정을 확인할 수 있습니다. 빌드 결과 윈도우를 열기 위해서는 Build > Build Results 메뉴를 선택하거나 Command-Shift-B를 이용하시면 됩니다.

 그림 9 : target의 빌드 결과를 순차적으로 보여주는 빌드 결과 윈도우

그림 9 : target의 빌드 결과를 순차적으로 보여주는 빌드 결과 윈도우


[편집] Build rule과 설정

그리고 Xcode가 target에 따라 어떻게 파일 참조를 다르게할 수 있을까요? 간단합니다. Xcode는 build rule과 설정이 target에서 묶여져 있습니다. 기본 룰과 설정은 포함된 모든 코드(GCC가 지원하는 범위내에서)를 GCC가 컴파일할 때 지정합니다. 하지만 이전 버전의 GCC로 C 소스를 컴파일하려면 그림 10과 같이 설정합니다.

 그림 10 : build rule과 설정은 target's Info window에서 수정 가능

그림 10 : build rule과 설정은 target's Info window에서 수정 가능


[편집] Executable Environment

앞서 설명드렸던 것처럼 실행환경은 Xcode에서 설정할 수 있습니다. 하나의 실행 환경은 실제 프로그램이 실행될 때 환경을 뜻하며, 여러 실행 환경을 설정하여 테스트 할 수 있습니다.

간단하게 실행 환경은 다음과 같이 정의합니다.

  • 사용될 실행 파일은 무엇인가? target에 빌드된 프로덕트의 한가지 이거나 시스템의 다른 실행파일입니다.
  • 실행시 사용할 command line 아규먼트는 제외합니다.
  • 실행전 실행 환경의 환경 변수를 설정합니다.
  • 디버거에서 어떻게 실행할 것인가?

그림 11을 통해 그 예를 확인할 수 있습니다.

 그림 11 : executable Info window에서 최종 결과물에 대한 세부 설정을 통해 최종 결과물을 테스트할 수 있다

그림 11 : executable Info window에서 최종 결과물에 대한 세부 설정을 통해 최종 결과물을 테스트할 수 있다


[편집] 더 많은 정보


이 문서의 원본은 ADC Home > Tools> Xcode > Understanding Xcode Project 입니다.