2013-07-24 6 views
2

소스에서 Qt 5를 빌드 중입니다. MacOS에서 Qt 바이너리를 복사하여 붙여 넣는 가장 쉬운 방법은 무엇입니까? 당신은 Qt는 프레임 워크의에 otool 실행하면 모든 종속성이 절대 경로를 사용하는 것을 볼 수 있습니다 :Mac OSX에서 재배치 한 후 Qt 바이너리를 패치 할 스크립트

bash-3.2$ otool -L QtWidgets 
QtWidgets: 
    /Users/../Qt/qt5/qtbase/lib/QtWidgets.framework/Versions/5/QtWidgets (compatibility version 5.1.0, current version 5.1.1) 
    /Users/../Qt/qt5/qtbase/lib/QtGui.framework/Versions/5/QtGui (compatibility version 5.1.0, current version 5.1.1) 
    /Users/../Qt/qt5/qtbase/lib/QtCore.framework/Versions/5/QtCore (compatibility version 5.1.0, current version 5.1.1) 
    /System/Library/Frameworks/Carbon.framework/Versions/A/Carbon (compatibility version 2.0.0, current version 155.0.0) 
    /System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa (compatibility version 1.0.0, current version 19.0.0) 
    /usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.5) 
    /System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL (compatibility version 1.0.0, current version 1.0.0) 
    /System/Library/Frameworks/AGL.framework/Versions/A/AGL (compatibility version 1.0.0, current version 1.0.0) 
    /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 65.1.0) 
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 169.3.0) 
    /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 744.18.0) 
    /usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 228.0.0) 
    /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation (compatibility version 300.0.0, current version 945.16.0) 
    /System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices (compatibility version 1.0.0, current version 45.0.0) 
    /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit (compatibility version 45.0.0, current version 1187.37.0) 

내가 QT 바이너리를 복사하고 해당 복사본에 대한 내 응용 프로그램을 연결, 그것은 작동하지만 일부 의존하는 프레임 워크입니다 오래 된 장소에서 가져온. 바이너리를 다른 컴퓨터로 옮기려고하면 상황이 더욱 악화됩니다. install_name_tool을 사용하여 문제를 해결할 수 있지만 오류가 발생하기 쉬운 많은 수작업을 알고 있습니다. 저를 도울 수있는 스크립트가 있는지 궁금합니다.

+0

이 * 작동 * : http://ynniv.com/blog/2006/02/deploying-app-that-use-dylibs-on-mac.html – trojanfoe

+0

다른 훌륭한 답변을 연결하려면 : http : // stackoverflow .com/a/17640221/110118 – mlvljr

답변

3

: make sub-src

로 설치합니다. 나는 Qt Installer Framework에 Mac OSX에서 재배치 된 Qt 바이너리를 패치하는 데 필요한 코드가 있음을 발견했다. 이 코드를 실행하는 데는 작은 문제가있었습니다. Qt5.1을 사용하는 동안 Qt4에 의존하기 때문에 컴파일하기가 쉽지 않은 C++로 작성되었습니다. 다행히도 모든 작업은 명령 줄을 통해 사용할 수 있다는 것이 밝혀졌습니다. 경우

./qt-mac-opensource-5.1.0-clang-offline.app/Contents/MacOS/qt-mac-opensource-5.1.0-clang-offline --runoperation "QtPatch" "mac" 
"/Path/to/Qt/binaries/which/need/to/be/patched" "qt5" 
======================================== 
Operation was successfully performed. 

당신이라는 오류 메시지가 "qmake를 : 는 Qt를 설치 프레임 워크 (맥 OSX를위한 Qt는 바이너리 설치 충분) 아래의 명령을 사용하여 만든 설치를 필요로 명령이 사용 프로그램이 아닙니다 "라고 말하면 qmake를 chmod하려고 시도합니다.

chmod 777 qmake 

참고 : 이것은 모든 QtIFW 설치 프로그램에서 사용할 수 있습니다. prebuilt version of QtIFW

좋아요, 그게 바로 지금까지 발견 된 가장 직접적인 방법입니다.

1

어쨌든 소스에서 QT5를 빌드하는 경우 정적 링크가 일부 골치 거리를 해결합니다.

원래 링크 목록이 잘못되었습니다.

QT를 정적으로 빌드하려면 ./configure를 실행할 때 인수에 -static을 추가하십시오.

./configure -prefix /Developer/qt -qt-zlib -qt-libpng -qt-libjpeg -universal -sdk /Developer/SDKs/MacOSX10.4u.sdk -static -release 

컴파일 함께 : 인터넷에 긴 검색 후 sudo make install

+0

링크가 끊어진 것 같습니다 – Maxym

+1

깨진 링크가 제거되었으며 정보가 직접 추가되었습니다. – LogicG8