为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原生开发中很高兴,不能自己解决这个问题。 谢谢你的回答!
答案 0 :(得分:0)
在Mac OS X上,部署过程与其他平台略有不同。通常,您将创建必须包含所有必需库的应用程序包。 Qt文档很好地描述了整个过程。以下是一些资源:
答案 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.
,其中
LIBTARGET
是TARGET
项目的lib
值,PROJECT
是您的subdirs
项目的名称,DETAILS
是你的构建&运行细节,APPDIR
是app
项目的目录,APPTARGET
是TARGET
项目的app
值。要在项目开发期间摆脱OSX上的这个问题,您需要将(OSX特定的)DYLD_LIBRARY_PATH
设置为lib
目录到整个项目的运行项目中的设置 - >建设与发展运行 - >运行环境
并使用值DYLD_LIBRARY_PATH
添加变量../LIBDIR/
- 或者,如果您使用命令行,export
该变量。
然后,要部署应用程序,您需要确保将动态库放在应用程序包中或创建静态编译的包。更多信息请点击Digia: Mac OSX Deployment。