[App 개발] 빌드로 만들어지는 결과물 중 .app 가 있는 것과 없는 것 ??
본문
.app 가 붙어 있는 것과 안 붙어 있는 것이 있는 것 같던데요. 둘 사이에는 어떤
차이점이 있는지 궁금합니다.
제가 아는 거라곤 .app는 터미널에서 open 으로, .app가 안 붙은 건 그냥 ./로
실행할 수 있다는 것 뿐이네요.. .app는 폴더라고 들은 것 같기도 한데..
질문 세 개를 연달아 올리니 좀 그렇네요 ^^;;
최신글이 없습니다.
최신글이 없습니다.
댓글목록 3
hongjuny님의 댓글
제가 꼭 답변을 달아야 한다는 의무는 없습니다만, 그래도 명찰이 무서워서 이렇게 모르면서도 꾸역꾸역 답변을 답니다. -_-;;;
Mac OS X 는 아시다시피 BSD 를 모태로 하는 Unix 입니다. 따라서 Unix 타입의 실행 모듈을 컴파일하고 읽어서 실행하는 것이 가능합니다.
그리고, Mac OS X 는 일반 Unix 에는 없는 Mac 고유의 Application Module 로딩 방법이 있습니다. Mac 에서는 Bundle 이라고 부릅니다.
번들에는 1. Application, 2. Framework, 3. Loadable bundle, 이렇게 세 가지 종류가 있습니다. 그 중에서 보통 Mac 용 응용프로그램은 Application 이라는 형식의 번들로 만들어집니다. 말씀대로 폴더가 맞습니다. 실제로 Show Package Contents 메뉴를 선택해서 내부를 볼 수 있습니다.
Application 번들의 상세 정보를 담고 있는 것이 밑에서도 잠깐 언급했던 *.plist (Property list) 입니다. Xcode 를 이용해서 소프트웨어를 작성하게 되면 이런 것들을 한 눈에 모두 관리할 수 있어 편합니다. 그 외에도 번들 안에는 응용프로그램의 아이콘, 리소스 등이 디렉토리별로 내장되어 있습니다.
Application 번들 내에 소프트웨어의 필요한 정보, 예를들면 그림 파일이나 음악 파일들을 넣어둘 수 있습니다. Xcode 의 프로젝트에서 그림 파일을 Add 하신 다음, 프로그램 루틴에서는 "MyApp.app/Contents/resources/mypict.png" 같이 해서 그림 파일을 참조할 수 있습니다.
hongjuny님의 댓글
MS Windows 에서는 Resource 파일을 모두 하나의 파일 내에 넣어두고, 실행 파일의 인스턴스에서부터 리소스 파일의 핸들을 이용해서 꺼내어 쓰는 구조로 되어 있죠. 물론, 모두 다 그런것은 아닙니다만... -_-;
그리고 도스 프로그램이건 윈도우 프로그램이건 모두 다 *.EXE 이죠. 처음에는 도스용 로더하고 윈도우용 로더가 분리되어 있어서, 윈도우 프로그램을 작성할 때에는
"This program runs under Windows" 어쩌구 저쩌구가 출력되는 WINSTUB.EXE 라는 도스 로더용 스텁을 첨부해서, 도스 환경이나 윈도우 도스 창에서 프로그램을 실행하면 저 문장이 출력되었는데, 그것도 Win32 에서 없어졌죠.
음... 뭔 말씀을 드리고 싶었던 것이었나... -_-;;; 하여간, 어플리케이션에 따라서 프로그램 로더에 차이가 있습니다... 라는 이야기를 하려고 했나봅니다. ㅠㅠ
wlee님의 댓글
항상 고맙습니다. hongjuny 님