Qt로 사용자 정의 프레임 워크를 만들고 싶습니다. 나는 프레임 워크 자체를 만들 수 있어요,하지만 Qt는 실행할 때 프레임 워크를 찾는데 실패 :Qt : Mac에서 프레임 워크 연결하기 : rpath 사용하기
dyld: Library not loaded: QSettingsDialog.framework/Versions/0/QSettingsDialog
Referenced from: /Users/sky/QtProjects/build-QSettingsDialog-Desktop_Qt_5_7_0_clang_64bit-Debug/Examples/SimpleExample/SimpleExample.app/Contents/MacOS/SimpleExample
Reason: image not found
이유는 간단하다 : 바이너리 어디 프레임 워크를 찾을 방법을 알고하지 않습니다.
나는 진에 otool 사용이보고 다음과 같이
otool -L Examples/SimpleExample/SimpleExample.app/Contents/MacOS/SimpleExample
Examples/SimpleExample/SimpleExample.app/Contents/MacOS/SimpleExample:
QSettingsDialog.framework/Versions/0/QSettingsDialog (compatibility version 0.1.0, current version 0.1.2)
@rpath/QtWidgets.framework/Versions/5/QtWidgets (compatibility version 5.7.0, current version 5.7.0)
@rpath/QtGui.framework/Versions/5/QtGui (compatibility version 5.7.0, current version 5.7.0)
@rpath/QtCore.framework/Versions/5/QtCore (compatibility version 5.7.0, current version 5.7.0)
/System/Library/Frameworks/DiskArbitration.framework/Versions/A/DiskArbitration (compatibility version 1.0.0, current version 1.0.0)
/System/Library/Frameworks/IOKit.framework/Versions/A/IOKit (compatibility version 1.0.0, current version 275.0.0)
/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 120.1.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1226.10.1)
그래서, 내 질문은 (자세한 내용은 아래의 물건을 확인 용) : 내 라이브러리의 경로를 설정 qmake를 말할 수있는 방법 받는 사람 :
@rpath/QSettingsDialog.framework/Versions/0/QSettingsDialog (compatibility version 0.1.0, current version 0.1.2)
qmake를 사용하여이 작업을 수행 할 수있는 방법이 있습니까? install_name_tool
으로 변경하는 방법을 알고 있지만 .pro 파일에 직접 추가하고 싶습니다.
는 지금까지 무슨 짓을 :
otool -l Examples/SimpleExample/SimpleExample.app/Contents/MacOS/SimpleExample
Load command 22
cmd LC_RPATH
cmdsize 136
path /Users/sky/QtProjects/build-QSettingsDialog-Desktop_Qt_5_7_0_clang_64bit-Debug/Examples/SimpleExample/../../QSettingsDialog (offset 12)
Load command 23
cmd LC_RPATH
cmdsize 48
path /Users/sky/Qt/5.7/clang_64/lib (offset 12)
:
나는 라이브러리가 빌드시에있는 경로를 포함하는 바이너리의 RPATH로 변경 내 프로 파일을 수정 한 이 방법을 사용하면install_name_tool
을 사용하지 않고도 rpath를 간단히 수정할 수 있습니다. 이 작업을 위해 그러나, 나는에 첫 번째 줄 변경해야
는
mac {
QMAKE_LFLAGS += -F$$OUT_PWD/../../QSettingsDialog/
QMAKE_LFLAGS += '-Wl,-rpath,\'$$OUT_PWD/../../QSettingsDialog\''
LIBS += -F$$OUT_PWD/../../QSettingsDialog/ -framework QSettingsDialog
}
마지막 누락 된 조각 방법입니다 : 응용 프로그램에 대한 내 프로 파일에서
@rpath/QSettingsDialog.framework/Versions/0/QSettingsDialog (compatibility version 0.1.0, current version 0.1.2)
을, 나는 다음과 같은 지정 @rpath/
을 추가하십시오. 당신의 도움을 주셔서 감사합니다.
나는 라이브러리 프로 파일을
QMAKE_LFLAGS_SONAME = -Wl,-install_name,@rpath/
를 추가했다 : @peppe의 코멘트에있는 링크에
아마도 Qt Creator가 수행하는 해킹을 살펴보십시오. Cf. https://code.qt.io/cgit/qt-creator/qt-creator.git/tree/src/qtcreatorlibrary.pri 및 https://code.qt.io/cgit/qt-creator/qt-creator. git/tree/src/rpath.pri – peppe
감사합니다.이 두 파일은 매우 편리하게 제공되어 문제를 해결하는 데 도움이되었습니다. – Felix
@Felix install_name_tool을 사용하는 방법을 알려주시겠습니까? 이 질문을보십시오 : https://stackoverflow.com/questions/46088104/adding-external-libraries-deploying-qt-app-mac-osx – arqam