mac OS X 上的 qmake subdir 模板

qmake subdir template on mac os X

本文关键字:subdir 模板 qmake 上的 OS mac      更新时间:2023-10-16

im 为 Qt (5.2.0) 项目创建子目录模板,如本答案中所述

我可以在带有 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

和叮当 ( -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本机开发中是新手,无法自己解决这个问题。 感谢您的回答!

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

Qt for Mac OS X - 部署

查看 Mac 部署工具

我假设你有这样一个具有以下目录结构的subdirs项目:

subdirs
+ app
+ lib

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

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

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.

哪里

  • LIBTARGETlib项目的TARGET价值,
  • PROJECTsubdirs项目的名称,
  • DETAILS是构建和运行的详细信息,
  • APPDIRapp项目的目录,并且
  • APPTARGETapp项目的TARGET价值。

为了在项目开发过程中摆脱OSX上的这个问题,您需要在Projects ->Build & Run -> RunEnvironment中将(OSX特定的)libDYLD_LIBRARY_PATH设置为整个项目的运行设置,并添加具有值../LIBDIR/的变量DYLD_LIBRARY_PATH- 或者,如果您从命令行工作,export该变量。

然后,若要部署应用,需要确保将动态库放置在应用捆绑包中或创建静态编译的捆绑包。有关 Digia: Mac OSX 部署的更多信息。