Cocoa 애플리케이션에 dylib 번들
해결하려는 과제
어떤 dylib을 사용하는 Cocoa 애플리케이션을 개발할 때 사용자가 dylib을 설치하고 있는지 모르기 때문에 애플리케이션 중에 번들로 제공하고 싶습니다.
이 예에서는 libusb-1.0.0.dylib를 번들로 사용하는 방법에 대해 설명합니다.
절차
dylib 복사
xcode에 libusb-1.0.0.dylib 추가

Build Phase (Copy Files) 추가
Target의 Build Phase를 수정한다. Editor → Add Build Phase → Add Copy Files Build Phase
이 Phase는 Link Binary with Libraries 위에 둔다.
* Destination: Shared Support
* Subpath: 공백
* Copy only when installing: 체크 없음
목록에 libusb-1.0.0.dylib 추가.

Build Phase (Run Script) 추가
Editor → Add Build Phase → Add Run Script Build Phase
이 Phase는 위에서 설명한 Copy Files Build Phase 아래에 둔다.
스크립트는 다음과 같습니다. 이것은 참고로 한 사이트에서 그대로.
#!/bin/bash
# In Xcode you actually enter the path for the shell
# you want to use in a text field about the shell source.
# So, !/bin/bash might not be necessary.
# Space separated list of libraries.
# Enter any dylibs you have in your Copy File Phase.
TARGETS=(libusb-1.0.0.dylib)
EXECFILE=${BUILT_PRODUCTS_DIR}/${EXECUTABLE_PATH}
LIBPATH=${BUILT_PRODUCTS_DIR}/${SHARED_SUPPORT_FOLDER_PATH}
NEWLIBPATH=@executable_path/../SharedSupport
for TARGET in ${TARGETS[@]} ; do
LIBFILE=${LIBPATH}/${TARGET}
TARGETID=`otool -DX "${LIBPATH}/$TARGET"`
NEWTARGETID=${NEWLIBPATH}/${TARGET}
install_name_tool -id "${NEWTARGETID}" "${LIBFILE}"
install_name_tool -change ${TARGETID} ${NEWTARGETID} "${EXECFILE}"
done
Link Binary with Libraries 변경
libusb-1.0.0.dylib를 추가한다. 이번에는 libusb가 의존하고 있는 IOKIT도 추가하고 있다.

최종 Build Phase의 순서는 이런 느낌으로.

완성
이것으로 번들과 링크 작업은 완성. libusb의 example을 AppDelegate에 넣어 움직여 보았지만 제대로 움직이고 있다.

주의
릴리스시에는 라이센스 표시를 잊지 말고.
참고
Reference
이 문제에 관하여(Cocoa 애플리케이션에 dylib 번들), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Nunocky/items/a913e8217f8aa6b87aec
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
릴리스시에는 라이센스 표시를 잊지 말고.
참고
Reference
이 문제에 관하여(Cocoa 애플리케이션에 dylib 번들), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Nunocky/items/a913e8217f8aa6b87aec
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Cocoa 애플리케이션에 dylib 번들), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Nunocky/items/a913e8217f8aa6b87aec텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)