2011-10-23 4 views
-1

좋아, 그래서 나는 엔지니어/응용 수학 전문가이고 약간의 기술 만이 약간의 소프트웨어의 리눅스 버전에 감명을 받았지만 맥 (의사 ...)을 원한다.'Mac 용 재배포 가능 바이너리, QT 및 다른 libs 사용'충돌 과정?

누군가가 재배포하는 방법을 가르쳐 줄 수 있나? Mac 용 실행 파일? Windows를 버리기 전에 원자 적 솔루션은 DLL을 System32 폴더에 복사하는 것이 었습니다. 몇 가지 하위 질문 :

1) "sudo macports install XYZ"가 표시됩니다. QT 앱을 정적으로 만들 수 있습니까? 또는 QT가 설치되어 있다고 가정 할 때 앱에서 앱에서 QT를 찾으려면 어떻게해야합니까?

2) Mac 용 응용 프로그램을 빌드 할 때 VTK + QT + Boost를 사용하는 예제가 있습니까?

모호한 질문에 사과합니다. 체계적으로 무엇을 검색 할 것인지 알았다면 그렇게했을 것입니다.

+2

[Qt의 Mac OS X에서 응용 프로그램 배포] (http://doc.qt.nokia.com/stable/deployment-mac.html)를 읽으셨습니까? –

답변

2

정적으로 Qt + VTK + Boost를 앱과 정적으로 연결하려는 특별한 이유가 있습니까? Mac의 경우 라이브러리와 같이 정적 링크를 동적으로 사용하는 것이 바람직한 이유는 무엇입니까 (라이센스 제외)는 생각할 수 없습니다.

Bavarious가 게시 한 "Mac OS X에서 응용 프로그램 배포"링크를 살펴보십시오. Mac 응용 프로그램을 번들에 저장하는 방법을 설명하여 많은 파일로 구성된 응용 프로그램을 사용자에게 단일 파일로 표시 할 수 있습니다. 라이브러리는 번들 (헤더 파일과 함께)에 저장할 수도 있습니다.이 경우 프레임 워크라고합니다. 필요한 모든 프레임 워크를 앱 번들 내에 저장할 수 있으므로 앱 자체가 포함됩니다.

Qt는 번들로 Qt는 프레임 워크 (플러스 플러그인), 다음 (install_name_tool 사용) 응용 프로그램 바이너리를 해결할 수 있도록 동적 링커는 응용 프로그램 번들에보고 알고 자동으로 복사 macdeployqt라는 유틸리티와 함께 ​​제공됩니다. VTK와 Boost에 대해 수동으로해야 할 필요가 있습니다.이 기능은 프레임 워크로 자동 생성되지 않으면 더 복잡 할 수 있습니다. 그들은 대중적인 도서관이다, VTK/Boost를 가진 Mac apps를 배치에 관하여 인터넷에 가이드가 있어야한다.

또한 Qt를 설치하기 위해 MacPorts를 사용하지 않을 것입니다. Qt 바이너리 available from Nokia은 정상적으로 작동하며, 둘 다 타겟팅해야 할 경우에 대비해 32 비트와 64 비트 모두를 위해 만들어졌습니다.

그런데 저는 특히 Windows 녀석은 아니지만, System32에 DLL을 던지면 Windows에 라이브러리를 배포하는 좋은 방법이라고 생각하지 않습니다. 내가 만든 Qt 응용 프로그램의 경우, Qt DLL (및 mingw/gcc DLL)을 .exe와 동일한 폴더에 저장하고 정상적으로 작동합니다.

+0

정적 인 이유 : 호환성 문제/런타임 충돌 문제보다 200MB의 디스크 공간을 낭비하기 때문입니다. 데모가 잘 작동하면 실제 "소프트웨어 녀석"을 할당하고이를 수행 할 수 있습니다. – user695917

+0

필자는 Mac에서 "DLL 및 exe 파일"과 동일한 기능을 실제로 찾고 있다고 생각하지만이 경우에도 시스템에서 코코아 GUI를 제공해야하기 때문에 한계가 있습니다. – user695917

+0

"DLL에있는 exe 및 폴더에있는"은 모든 프레임 워크/dylib를 번들로 복사 한 다음 모든 라이브러리 종속성이 번들의 라이브러리에 의해 충족되도록'install_name_tool' 픽스 업을 수행하는 것입니다. 'qmake'를 사용하면 .app 번들을 생성하고,'macdeployqt'를 실행하여 Qt 라이브러리에 복사합니다. VTK와 Boost의 경우 dylib (아마 MacPorts로 작성)를 Frameworks 폴더에 복사 한 다음 수동으로 install_name_tool을 수행 할 수 있습니다. i386 대 x86_64와 VTK/Boost에주의하십시오. –