'Xcode'에 해당되는 글 3건

  1. 2009.08.17 [Objective-C] C++ 를 같이 사용하기.
  2. 2009.08.05 [XCode] Project Name 바꾸기. 3
  3. 2009.04.29 삽질의 연속... (아직 ing.)
삽질기/iPhone Dev2009. 8. 17. 16:26
Mac Apps 혹은 iPhone Apps 을 개발하다 보면 여러 이유에서 C, 혹은 C++ 로 개발된 라이브러리를 사용하게 됩니다.

제 경우에는 Core Audio 를 사용할 때, 이런 경우를 많이 접했는데요, 문제는 다음과 같았습니다.

 .h / .m 파일안에 C / C++ 헤더파일을 #import 하면 링크 에러가 발생합니다.

 무엇이 문제일까 고민을 하던 중, 결국 구글링으로 해결했습니다.

해결방법은

단순히 .m 파일을 .mm 으로 바꾸면 되는 것이었습니다.

일반적으로 .m 은 Obj-C 구현부가 들어가고, - implementation file - .mm 은 C, C++ 구현부를 의미 - implementation more file - 합니다.

XCode 는 파일 확장자를 보고 컴파일러를 선택한다고 합니다.

즉, .m 의 경우에는 obj-C 컴파일러를 사용하지만, .mm 의 경우에는 C++ 컴파일러 (물론 Obj-C 도 잘 소화합니다.)를 사용하게 되는 셈이지요.

의외로 복잡할 줄 알았던 문제가 간단히 해결되었습니다. :)

-코나-

덧. 출처..는 검색한 지 며칠이 좀 지나서 가물가물합니다.. 죄송.. 구글링중에 찾은 문서였는데.. ^^;
Posted by 코나
삽질기/iPhone Dev2009. 8. 5. 03:47
아이폰 앱을 개발하다보면, 여러 이유로 하나의 프로젝트를 복사해서 프로젝트명을 바꿔야 할 때가 있다.

구글링을 해보면 다양한 방법들이 존재하고, 대부분 xcodeproj 컴포넌트(원래는 디렉토리) 안의  project.pbxproj 파일을 텍스트 에디터를 이용해 수정한다.

 project.pbxproj 파일안에는 프로젝트에 등록된 모든 파일이 고유 id 와 함께 기록되어 있는 것을 볼 수 있으며, 자칫 잘못해서 수정에 실패해서 xcode 가 파싱을 제대로 하지 못한다면, 프로젝트를 다시 열 수 없게 된다.

 약 5시간의 삽질 + 구글링 끝에, 가장 깔끔하다고 판단되는 솔루션을 찾았고, 적절히 동작하는 것을 확인했다.
 물론, 직접 proejct 파일을 수정하지도 않는다.

원문 링크는 다음과 같다.


기록을 위해서, (아이폰 프로젝트 기준으로) 간단히 요약하면..

0. xcode 종료된 상태에서
1. 폴더를 복사하고, 새 이름을 정한다. 
2. 폴더를 열고, .xcodeproject 파일 이름을 수정한다.
3. 수정한 파일을 연다. (프로젝트가 열림)
4. 왼쪽 Groups & Files 리스트에서 Targets 그룹 안의 target 을 더블클릭한다.
5. info 창의 General 탭에서 원하는 프로젝트명을 적는다.
6. Build 탭에서 Packaging 그룹 안의 Product Name 을 변경된 프로젝트명으로 바꿔준다.
7. 6 단계의 Debug / Release 및 기타 단계(ad-hoc, Distribution...) 도 모두 바꿔준다.
6. Build / Clean all targets 을 실행한다.

첨언하면,
 Projects 그룹 안의 name.app 파일이 중복될 경우, 두개를 별도의 프로그램으로 인식하지 않고, 선행된 쪽의 결과물을 연결해서 가져오는 동작을 보여주고 있었다.
 최초에는 Target 에서 Product Name 만 바꿨는데, 곰곰히 생각해보니, 배포때는 Products 의 .app 을 보내지 않던가.

 또하나 중요한 부분은 7번 단계.
 Debug 만 수정할 경우, Products 안의 파일명이 바뀌지 않아서, 위에서 언급한 build 결과물들을 공유하는 사태가 발생한다.
 사실 이부분 때문에 고생을 좀 했는데, 결론은 모두 수정이 정답.

 간만에 삽질이었다 ㅠ.ㅜ

-코나-

덧. 적고보니, 결국 build 탭에서 7번을 제대로 수행했으면 되었다는.......쿨럭.. ^^;;


Posted by 코나
일기장2009. 4. 29. 21:37
요즘 개발에 도움되는 글은 쓰지 않고, 계속 엉뚱한 일기장만 쓰적이게 됩니다 그려... @_@;;;;

사건의 발단은, 그랬습니다... 데스크탑에서 아이폰 프로젝트에 Tableview Controller 를 추가하면서 시작이었지요.

'음, 좋았어, 요래요래 해서 요리요리(?)하면 되겠구만..'

미리 설계해둔 목록을 따라서 습관적으로 코딩을 하던 중,(요즘 제 스타일 이랍니다. 일하기 싫을 때 빈둥거리면서 숫자 붙여서 쭈욱 적은 뒤에 몰아서 코딩하기.. 쿨럭) 중간 테스트를 목적으로 프로그램을 띄우려 했습니다.

간단히 적으면,

View-based Project -> tableviewController 를 상속한 클래스 하나 추가 -> interface builder 에서 뷰 추가 후, 내부를 손질(?)해서 테이블 뷰 기반으로 바꾼뒤 저장 -> 버튼을 누를때 팝업시키기.

'룰루 랄라, 자 즐거운 컴파일 시간!'

앗 그런데 이게 웬일, 컴파일이 되지 않는겁니다! ㅜ.ㅡ


우오오오오! 왜 안되는거야!!

그것도 버그가 난 부분은 좀전에 추가한 테이블 뷰 컨트롤러 클래스 부분에서 기본 셀을 반환해주는 자동 생성 소스 부분!
(여기서 좀 더 자세히 봤어야 하건만... 스스로 자폭해버리죠..)

버전 문제인가?

 - 현재 데탑에서는 iPhone 3.0 beta 1 시절 xcode 로 개발을, 노트북은 욕심(?)안부리고 iPhone 2.2.1 SDK 릴리즈를 쓰고 있었기에 (사실상 아무런 문제 없이 둘 다 2.2.1 버전으로 개발이 가능합니다. (당연하지만.) ), 눈엣가시였던 XCode 재설치가 마음에 걸리기 시작합니다.

급한 마음에, 노트북에서 테스트를 하기 위해서 레포지토리에 올린 뒤에, 노트북에서 업데이트를 시전합니다.

 음, 역시 오류네...;;;

결국 최악의 수단을 선택합니다. 눈엣가시(?)를 빼기 위해서.. - 사실 그동안 이것저것 인증 문제 등등으로 해서 많이 고생을 했었기에..

 XCode 를 2.2.1로 다운그레이드 하자.

생각은 짧고(?) 행동은 빠르게, XCode를 다 들어내고 고민을 합니다.

내 계정안의 설정들을 다 제거해버리자. 깔끔하게 함 시작을 해보는 거야...

결국, 함부로(?) 파일들을 삭제해 나갔습니다.
그리고, 2.2.1 로 설치 완료.

어, 그런데 왜 내 터치를 인식하지 않지? -.-;;

오거나이저에서 터치를 인식하지 않습니다, 아이 포토는 잘 뜨는데 말이죠.
불길한 예감이 머리속을 스쳐지나 갑니다.

그렇습니다, 아이튠즈에서도 장비가 안잡힙니다.
유일하게 '아이포토'만 장비를 인식할 뿐, 정작 필요한 XCode 오거나이저와 아이튠즈는 감감 무소식입니다.

허걱, 뭥미.. @_@;;

웹도 뒤져보고 가지가지를 다 해봅니다. (당시 시각 오전 11시 30분.)

슬슬 새로운 욕심(?)이 고개를 들기 시작합니다.

그래, 이기회(?)에 누엣가시(???) 데탑을 새로 깔자. 불끈!

마침 비워둔 채 HPS+ 로 포멧해놓은 120G 하드가 절 기다립니다.;;;;

하지만 아실만한 분들은 다 아시겠지만, 제 데탑은 해킨토시.

결국 고생길을 택하고, 열심히 백업 중;; 입니다. 120기가가 거의 다 찼네요.. ㅜ.ㅡ

그.런.데.

좀전에 노트북으로 소스를 재코딩하면서 알아버렸습니다, 왜 오류가 났었는지를... ㅠ.ㅜ

프로젝트 기본 설정을 3.0으로 해둔 채, 테이블 뷰 컨트롤러를 추가했다가, 그만 3.0에 추가될 기본 코드가 생성이 되었던 거지요.
더 큰 문제는, 기본 설정을 바꾸지 않고, 단순히 디버깅에서 장비의 버전을 2.2.1로만 바꿔놨다는 거. (설정창이 두개 있습니다. 빌드탭이 아닌 첫 탭에서 했어야 하는데 말이죠.. ㅜ.ㅡ)

 결국, 원인은 밝혀졌지만, 이미 장비는 인식되지 않는 상태. 좋던 싫던 재설치를 해야 한다는 거죠. ㅠ.ㅜ

조금 더 차분히 살펴볼 껄.. ㅠ.ㅜ 그럼 그냥 아까 맨 처음때 해결이 되었을텐데.. ㅠ.ㅜ

뭐, 떡실신은 아니지만 대략 이런 표정이었죠 잠시동안은... ^^;;;

어쨌던 몇번 삽질(?)을 더 하면 깨끗한 데탑으로 신선하게 다시 시작할 수 있기에, - 사실 노트북에 개발환경이 성공적으로 되어있는 상태라서 이짓;;을 하는지도 모릅니다 그려.. - 간만에 윈도 시절로 돌아간 마음;;;으로 백업;;을 진행중입니다.

 오늘 교훈은 하나.

 아무리 급해도, 눈을 크게 뜨고 자세히 살펴보자~ ㅜ.ㅡ

 설치 마무리되면 추가 포스팅 하겠습니다.

 -오늘은 삽질의 대가! 코나-

Posted by 코나