mac os X上的qmake subdir模板

时间:2014-01-22 07:05:46

标签: c++ macos qt qt5 qmake

为Qt(5.2.0)项目创建子目录模板,如answer

所述

我可以使用minGW和GCC在win和linux平台上构建这个,但在mac os上我会得到下一个错误

dyld: Library not loaded: libfile-helpers.1.dylib
Referenced from: /Users/myusername/Programming/Qt/build-ProjectName-qt-Desktop_Qt_5_2_0_clang_64bit-Debug/build/project
Reason: image not found

该程序意外结束。

主可执行文件上的otool -L提供下一个输出

libfile-helpers.1.dylib (compatibility version 1.0.0, current version 1.0.0)
libgui.1.dylib (compatibility version 1.0.0, current version 1.0.0)
/Users/myusername/Qt/5.2.0/clang_64/lib/QtGui.framework/Versions/5/QtGui (compatibility version 5.2.0, current version 5.2.0)
/Users/myusername/Qt/5.2.0/clang_64/lib/QtCore.framework/Versions/5/QtCore (compatibility version 5.2.0, current version 5.2.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/libstdc++.6.dylib (compatibility version 7.0.0, current version 60.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1197.1.1)

但文件* .dylib放在子目录中,无法在当前设置中找到

如何在没有手动文件操作的情况下在构建后正确运行项目 我在build.pro中做的一个更改(参见开头的答案)是添加下一个文本

macx {
   CONFIG -= app_bundle
} 

(uname -a)

Darwin MacBook.local 13.0.2 Darwin Kernel Version 13.0.2: Sun Sep 29 19:38:57 PDT 2013; root:xnu-2422.75.4~1/RELEASE_X86_64 x86_64

使用qmake(-v)

QMake version 3.0
Using Qt version 5.2.0 in /Users/myusername/Qt/5.2.0/clang_64/lib

和clang(-v)

Apple LLVM version 5.0 (clang-500.2.79) (based on LLVM 3.3svn)
Target: x86_64-apple-darwin13.0.2
Thread model: posix

我在osX原生开发中很高兴,不能自己解决这个问题。 谢谢你的回答!

2 个答案:

答案 0 :(得分:0)

在Mac OS X上,部署过程与其他平台略有不同。通常,您将创建必须包含所有必需库的应用程序包。 Qt文档很好地描述了整个过程。以下是一些资源:

Qt for Mac OS X - Deployment

查看The Mac Deployment Tool

答案 1 :(得分:0)

我假设您有一个具有此目录结构的子目录项目:

subdirs
  + app
  + lib

也就是说,一个带有应用程序(称为subdirs)和lib(称为app)项目的子目录项目(此处创造性地称为lib)。

现在,如果您的app在OSX上的lib项目中使用动态链接/共享subdirs项目,则会出现以下错误:

dyld: Library not loaded: libLIBTARGET.1.dylib
  Referenced from: /path/to/qt/build/dir/build-PROJECT-DETAILS/APPDIR/APPTARGET
  Reason: image not found
The program has unexpectedly finished.

,其中

  • LIBTARGETTARGET项目的lib值,
  • PROJECT是您的subdirs项目的名称,
  • DETAILS是你的构建&运行细节,
  • APPDIRapp项目的目录,
  • APPTARGETTARGET项目的app值。

要在项目开发期间摆脱OSX上的这个问题,您需要将(OSX特定的)DYLD_LIBRARY_PATH设置为lib目录到整个项目的运行项目中的设置 - >建设与发展运行 - >运行环境 并使用值DYLD_LIBRARY_PATH添加变量../LIBDIR/ - 或者,如果您使用命令行,export该变量。

然后,要部署应用程序,您需要确保将动态库放在应用程序包中或创建静态编译的包。更多信息请点击Digia: Mac OSX Deployment