'XPCOM'에 해당되는 글 1건

  1. 2008.03.10 x-code 를 이용한 XPCOM Component universal binary build 하기 2 by 하루하루

회사에서 하는 일을 기준으로 잊어먹지 않기위해 정리해 둡니다. ^^

기본적인 과정은 다음과 같다.


동일한 소스코드를 가지고, target 을 세개를 만든다.


1. i386 빌드를 위한 타켓 -> BSD Dynamic Library

2. PPC 빌드를 위한 타켓 -> BSD Dynamic Library

3. 두개 타겟을 가지고 lipo 이용한 스크립트를 실행시켜 universal binary 만들 타겟 -> Special Targets Aggregate


일단, MakeFile 있는 빌드 옵션들을 x-code 환경에 적어줘야 한다.


여기서 설명하는 x-code 버전은 3.0 기준으로 한다.


1. i386 타겟을 더블클릭한다.

2. Build -> Architectures -> Valid Architectures 항목을 i386으로 정해준다.

3. Build -> Build Locations -> Base SDK Path 값을 $(DEVELOPER_SDK_DIR)/MacOSX10.4u.sdk 으로 변경

4. Build -> Linking -> Other Linker Flags 값을


-Wl,-executable_path,/Users/jslee/Documents/DEV/FF-Extension/mozilla-u/build/ppc/dist/universal/xulrunner/XUL.framework/Versions/Current -lxpcomglue_s -lxpcom -lnspr4 -lplds4 -lplc4 -liconv


5. Build -> Search Paths -> Header Search Paths 값을 미리 컴파일한 "gecko sdk path"/include 경로를 적어준다. 이때 주의사항은 i386 이면 i386 gecko sdk path 적어주고, PPC 타겟이면 ppc gecko sdk path 적어준다.


6. Build -> Search Paths -> Library Search Paths 값을 미리 컴파일한 "gecko sdk path"/lib 경로와, 미리 universal binary 컴파일한 XUL.Framework 링크 시켜준다.

7. Build -> GCC 4.0 - Language -> Other C++ Flags 값에 -fshort-wchar 적어준다.

8. Build -> GCC 4.0 - Preprocessing -> Preprocessor Macros 값에 XP_UNIX=1 XP_MACOSX=1 값을 차례로 넣어준다.


이렇게 한후 하나씩 빌드해서 무리없이 빌드 되는것을 확인한다.


9. universal binary 만들 타겟 선택하여 new -> New Build Phase -> New Run Script Build Phase 실행

10. 9 에서 나오는 창에 script 란에 다음을 입력


lipo -create $TARGET_BUILD_DIR/libfpweblink-i386.dylib $TARGET_BUILD_DIR/libfpweblink-ppc.dylib -output $TARGET_BUILD_DIR/fpweblink.dylib


11. universal binary 로 만들 타겟 을 더블클릭하여 정보 창을 띄운다. 정보창에서 Direct Dependencies 에


- PPC Target

- i386 Target

두가지를 등록한다.


12. universal binary 타겟을 clean target 후 build 하면 의존성 걸려 있는 타겟들 부터 새로 빌드한후, universal binary 까지 만드는 것을 볼 수 있다.




Posted by 하루하루